• leetcode 15 3sum & leetcode 18 4sum


    3sum:
    1
    class Solution { 2 public: 3 vector<vector<int>> threeSum(vector<int>& nums) { 4 vector<vector<int>>result; 5 vector<vector<int>>::iterator iter; 6 vector<int>Middle; 7 int length=nums.size()-1; 8 sort(nums.begin(),nums.end()); 9 for(int i=0;i<length-1;i++) { 10 int st=i+1,en=length; 11 if(i>0&&nums[i]==nums[i-1])continue; 12 while(st<en) { 13 while(st>i+1&&nums[st-1]==nums[st]) { 14 st++; 15 continue; 16 } 17 while(en<length&&nums[en+1]==nums[en]) { 18 en--; 19 continue; 20 } 21 if(st>=en)break; 22 int temp=nums[st]+nums[en]; 23 if(temp+nums[i]==0) { 24 Middle.push_back(nums[i]); 25 Middle.push_back(nums[st]); 26 Middle.push_back(nums[en]); 27 result.push_back(Middle); 28 Middle.clear(); 29 st++; 30 } 31 else 32 if(temp+nums[i]<0) 33 st++; 34 else 35 if(temp+nums[i]>0) 36 en--; 37 } 38 } 39 return result; 40 } 41 };

     4sum:

     1 class Solution {
     2 public:
     3     vector<vector<int>> fourSum(vector<int>& nums, int target) {
     4         vector<vector<int>> result;
     5         vector<int>MiddResult;
     6         if(nums.size()<4)return result;
     7         sort(nums.begin(),nums.end());
     8         int length=nums.size();
     9         for(int i=0;i<length-3;i++) {
    10             if(i>0&&nums[i]==nums[i-1])continue;
    11         for(int j=i+1;j<length-2;j++) {
    12             if(j>i+1&&nums[j]==nums[j-1])continue;
    13             int st=j+1,en=length-1;
    14             while(st<en) {
    15                 if(st>j+1&&nums[st-1]==nums[st]) {
    16                     st++;
    17                     continue;
    18                 }
    19                 if(en<length-1&&nums[en+1]==nums[en]) {
    20                     en--;
    21                     continue;
    22                 }
    23                 int temp=nums[i]+nums[j]+nums[st]+nums[en];
    24                 if(temp==target) {
    25                     MiddResult.push_back(nums[i]);
    26                     MiddResult.push_back(nums[j]);
    27                     MiddResult.push_back(nums[st]);
    28                     MiddResult.push_back(nums[en]);
    29                     result.push_back( MiddResult);
    30                     st++;
    31                     MiddResult.clear();
    32                 }
    33                 else 
    34                 if(temp<target)
    35                    st++;
    36                   else en--;
    37             }
    38         }
    39         }
    40         return result;
    41     }
    42 };
  • 相关阅读:
    Android系统根文件系统目录结构
    4面 晶晨半导体 问题总结
    linux 工作队列
    Linux tasklet 的测试
    ArbotiX-M引脚说明
    locobot
    视频地址
    S1雷达ROS包更新指南
    rospy
    mx-28在 labview环境下的开发
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/5937615.html
Copyright © 2020-2023  润新知