今天由于小白导师拖着开组会,学习任务没跟上,晚上刷了哈力扣,看了下侯捷大佬的高级程序语言编程,讲得真的清新脱俗,推荐大家想学c++的一定要看,下面开始正题。
1、力扣第一题--两数之和

解题思路:暴力求解,直接遍历数组与目标值进行对比,相等的话返回数组元素的下标即可
代码如下:
class Solution {public:vector<int> twoSum(vector<int>& nums, int target) {vector<int>out;for(int i =0;i < nums.size();i++){for(int j = i+1;j < nums.size();j++){if(nums[i] + nums[j] == target){out.push_back(i);out.push_back(j);}}}return out;}};
暴力法的缺点就是时间和空间复杂度极高,看解题分析:

2、删除数组中的重复元素
题目如下:


解题思路:要删除重复的元素,需要采用双指针,一个慢指针和一个快指针,具体见代码,类似的题目力扣上还有很多,抓住最关键的一点就是,要删除重复的元素,必须将不重复的元素移动到最前面来,还有就是双指针的应用
代码如下:
class Solution {public:int removeDuplicates(vector<int>& nums) {//解题思路:因为数组是有序的数组,所以如果有重复的元素,肯定是相邻的,只需要定义一个双指针i和j,i指向第一个元素//j指向第二个元素,当两者指向的元素相等时,j向后移动;当两者指向的元素不相等时,将j所指向的元素赋值给i的后一个位置//的元素,再将i和j分别向后移动if(nums.size()==0){return 0;}int i = 0;for(int j = 1;j < nums.size();j++){if(nums[i] != nums[j]){nums[i+1]=nums[j];i++;}}return i +1; //得到的就是数组的长度}};
内存和时间消耗如下:


ok,今天的力扣刷题就到这里,第二题居然是简单题,我靠,伤害性不大,侮辱性极强呀,本来就压抑的一天easy题都解决不了,更压抑了。各位,晚安!(ps:封面请忽略)
文章转载自只会C的码农,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




