leetcode题目(2)

news/2025/1/6 3:27:24/

目录

1.删除有序数组中的重复项

2.移除元素

3.找出字符中第一个匹配项的下标

4.搜索插入位置

5.最大子数组和

6.最后一个单词的长度


1.删除有序数组中的重复项

https://leetcode.cn/problems/remove-duplicates-from-sorted-array/description/

int removeDuplicates(int* nums, int numsSize) {if(numsSize == 0)return 0;int fast = 1,slow = 1;while(fast < numsSize){if(nums[fast] != nums[fast - 1]){nums[slow] = nums[fast];++slow;}++fast;}return slow;
}

2.移除元素

https://leetcode.cn/problems/remove-element/

int removeElement(int* nums, int numsSize, int val) {int fast = 0,slow = 0;for(int i = 0;i < numsSize;i++){if(nums[fast] != val){nums[slow] = nums[fast];fast++;slow++;}else{++fast;}}return slow;
}

3.找出字符中第一个匹配项的下标

https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/

class Solution {
public:int strStr(string haystack, string needle) {int n = haystack.size(), m = needle.size(); if (m == 0) return 0; vector<int> pi(m); // 创建一个数组pi,用于存储needle的前缀函数值for (int i = 1, j = 0; i < m; i++) { // 从needle的第二个字符开始遍历while (j > 0 && needle[i] != needle[j]) { // 如果当前字符不匹配,且j不为0j = pi[j - 1]; // 更新j为pi[j-1],即最长的相同前缀后缀的长度}if (needle[i] == needle[j]) { // 如果当前字符匹配j++; // 更新j为下一个字符}pi[i] = j; // 更新pi数组}for (int i = 0, j = 0; i < n; i++) { // 遍历haystackwhile (j > 0 && haystack[i] != needle[j]) { // 如果当前字符不匹配,且j不为0j = pi[j - 1]; // 更新j为pi[j-1]}if (haystack[i] == needle[j]) { // 如果当前字符匹配j++; // 更新j为下一个字符}if (j == m) { // 如果j等于needle的长度,说明找到了匹配的子字符串return i - m + 1; // 返回needle在haystack中的起始索引}}return -1; // 如果遍历完haystack都没有找到needle,返回-1}
};

4.搜索插入位置

https://leetcode.cn/problems/search-insert-position/

int searchInsert(int* nums, int numsSize, int target) {for(int i = 0;i<numsSize;++i){//如果值相等,返回索引if(nums[i] == target)return i;//小于返回当前索引if(target < nums[i])return i;}//大于所有,返回数组长度return numsSize;
}

5.最大子数组和

https://leetcode.cn/problems/maximum-subarray/

class Solution {
public:int maxSubArray(vector<int>& nums) {int pre = 0,maxsum = nums[0];for(const auto& x: nums){//将x加入到子数组中与x+pre比较大小,更新最大值pre = max(pre + x, x);maxsum = max(maxsum,pre);}return maxsum;}
};

6.最后一个单词的长度

https://leetcode.cn/problems/length-of-last-word/description/

class Solution {
public:int lengthOfLastWord(string s) {int index = s.size() - 1;while(s[index] == ' ')index--;int wordlength = 0;while(index >= 0 && s[index] != ' '){wordlength++;index--;}return wordlength;}
};


http://www.ppmy.cn/news/1560595.html

相关文章

C++软件设计模式之命令模式

C设计模式中的命令模式是一种行为设计模式&#xff0c;它封装了一个请求作为一个对象&#xff0c;从而让你使用不同的请求把客户端与服务操作解耦。这种模式有着广泛的用途和多种变体。以下是对命令模式的详细解析&#xff1a; 动机与意图 解耦调用者和接收者&#xff1a;命令…

并发编程 之 线程池实战配置建议(二)

本篇围绕线程池在不同场景下的使用&#xff0c;各种参数调优&配置&#xff0c;包括线程池的关闭等&#xff1b; 将结合场景、源码和示例代码来说明其中关键。 目录 1. 创建线程池 1.1 corePoolSize 1.2 maximumPoolSize 1.3 workQueue 1.3.1 ArrayBlockingQueue 1.3.2…

SSH 连接远程仓库并推送本地项目

Git 是一个强大的版本控制工具&#xff0c;能够帮助开发者管理项目的代码版本&#xff0c;并便于与他人协作。为了高效地与远程仓库&#xff08;如 GitHub、GitLab 等&#xff09;进行交互&#xff0c;常见的做法是使用 SSH 协议进行连接。在本篇文章中&#xff0c;我们将从零开…

概率论与数理统计

概率论占比更多&#xff0c;三分之二左右 数理统计会少一些 事件之间的概率 ab互斥&#xff0c;不是ab独立 古典概型吃高中基础&#xff0c;考的不会很多 条件概率公式&#xff0c;要记 公式不要全记&#xff0c;很多有名称的公式是通过基础公式转换而来的 目的在于解决一…

[人工智能] 结合最新技术:Transformer、CLIP与边缘计算在提高人脸识别准确率中的应用

随着人工智能的快速发展&#xff0c;特别是深度学习和自然语言处理领域的革命性技术&#xff0c;越来越多的前沿技术被应用于人脸识别中。Transformer架构、CLIP模型以及边缘计算的结合&#xff0c;正成为提升人脸识别准确率和应用效能的关键技术路径。特别是在多样化场景下&am…

node.js之---子线程(child_process)模块

为什么需要子线程&#xff08;child_process&#xff09;模块 Worker Threads 的基本概念 如何使用 Worker Threads Worker Threads 的性能 Worker 线程的优势和限制 进阶用法&#xff1a;共享内存 为什么需要子线程&#xff08;child_process&#xff09;模块 在 Node.js…

条款35:考虑虚函数以外的其它选择(Consider alternatives to virtual functions)

条款35&#xff1a;考虑虚函数以外的其它选择 1.1 提出问题 假设正在制作一款游戏&#xff0c;正在为游戏中的角色设计一个层次结构。 class GameCharacter { public:virtual int healthValue() const; //返回角色的生命值;派生类可以重新定义它... // };1.2 解决办法 让我…

【狂热算法篇】解锁数据潜能:探秘前沿 LIS 算法

嘿&#xff0c;各位编程爱好者们&#xff01;今天带来的 LIS 算法简直太赞啦 无论你是刚入门的小白&#xff0c;还是经验丰富的大神&#xff0c;都能从这里找到算法的奇妙之处哦&#xff01;这里不仅有清晰易懂的 C 代码实现&#xff0c;还有超详细的算法讲解&#xff0c;让你轻…