1、27、移除元素
双指针
int removeElement(int* nums, int numsSize, int val) { int left = 0; for (int right = 0; right < numsSize; right++) {//设置两个指针,如果r指针元素不等于val,一定是输出数组元素,赋给l,然后l、r右移,如果r元素等于val,不在输出数组里,l不动,r右移 if (nums[right] != val) { nums[left] = nums[right]; left++; } } return left; }
双指针优化,只需遍历一遍
int removeElement(int* nums, int numsSize, int val) { int left = 0, right = numsSize; while (left < right) { if (nums[left] == val) { nums[left] = nums[right - 1]; right--; } else { left++; } } return left; }
2、加一(c++)
题目简单描述:把数组中的所有数当成一个数,输出这个数字加一后的数组
class Solution { public: vector<int> plusOne(vector<int>& digits) { int n=digits.size(); for(int i=n-1;i>=0;i--){ if(digits[i]+1==10){ digits[i]=0; } else{ digits[i]=digits[i]+1; return digits;//不光是后面数是9变成0,一定要等到前面的数加1之后再输出 } } vector<int> ans(n + 1); ans[0] = 1; return ans; } };标签:digits,27,val,nums,int,right,66,日记,left From: https://www.cnblogs.com/zhishiyigenicheng/p/16798854.html