一、移动零
1、题目讲解
2、讲解算法原理
3、代码实现
class Solution { public: void moveZeroes(vector<int>& nums) { for(int cur=0,dest=0;cur<nums.size();cur++) { if(nums[cur]) { swap(nums[cur],nums[dest++]); } } } };
二、复写零
1、题目讲解
2、讲解算法原理
3、代码实现
class Solution { public: void duplicateZeros(vector<int>& arr) { int cur=0,dest=-1,n=arr.size(); while(cur<n) { if(arr[cur]) dest++; else dest+=2; if(dest>=n-1) break; cur++; } if(dest==n) { arr[n-1]=0; cur--; dest-=2; } while(cur>=0) { if(arr[cur]) arr[dest--]=arr[cur--]; else { arr[dest--]=0; arr[dest--]=0; cur--; } } } };
三、盛水最多的容器
1、题目讲解
2、讲解算法原理
3、代码实现
class Solution { public: int maxArea(vector<int>& height) { int max=0,begin=0,end=height.size()-1; while(begin<end) { if(height[begin]>height[end]) { int v1=height[end]*(end-begin); if(v1>max) max=v1; --end; } else { int v2=height[begin]*(end-begin); if(v2>max) max=v2; ++begin; } } return max; } };
四、快乐数
1、题目讲解
2、讲解算法原理
3、代码实现
class Solution { public: int bigsum(int n ) { int sum=0; while(n) { int ret=n%10; sum+=ret*ret; n/=10; } return sum; } bool isHappy(int n) { int slow=n,fast=bigsum(n); while(fast!=slow) { fast=bigsum(bigsum(fast)); slow=bigsum(slow); } return slow==1; } };