随笔分类 - 算法 / 双指针
摘要:vector<int> reversePrint(ListNode* head) { vector<int> ans; if(head==NULL){ return ans; } ListNode* cur=head; while(cur!=NULL){ ans.insert(ans.begin()
阅读全文
摘要:string reverseWords(string s) { int l=0; int r=0; for(int i=0;i<s.length();i++){ if(s[i]==' '){ r=i-1; while(l<r){ swap(s[l],s[r]); l++; r--; } l=i+1;
阅读全文
摘要:string reverseWords(string s) { int l=0; int r=0; for(int i=0;i<s.length();i++){ if(s[i]==' '){ r=i-1; while(l<r){ swap(s[l],s[r]); l++; r--; } l=i+1;
阅读全文
摘要:vector<int> twoSum(vector<int>& nums, int target) { int l=0; int r=nums.size()-1; vector<int> ans; while(l<r){ if(nums[l]+nums[r]>target){ r--; }else
阅读全文
摘要:/* 使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。 右指针不断向右移动,每次右指针指向非零数,则将左右指针对应的数交换,同时左指针右移。 */ void moveZeroes(vector<int>& nums) { int n = nums.size(), lef
阅读全文
摘要:vector<int> sortedSquares(vector<int>& nums) { int l=nums.size(); vector<int> v; for(int i=0;i<l;i++){ v.push_back(nums[i]*nums[i]); } sort(v.begin(),
阅读全文