力扣 題目15 三數之和

2022-10-09 10:12:08 字數 2797 閱讀 6983

1 #include2 #include3 #include4

using

namespace

std;

5class

solution ;

10int middle=-1;11

//排序

12sort(nums.begin(), nums.end());

13//

將0進行留乙個處理 並記錄0的個數

14for (int i = 0; i < nums.size(); i++)

20if (nums[i] == 0&&zero[0]!=-1

) 24

if (zero[0] != -1&&zero[2]==num) 27}

28if (zero[2] > 1

) 31

int min = nums.size() - 1;32

//如果0的個數大於2 即有000存在

33if (zero[2] > 2

) );35}

36//

找到負數和正數的臨界點

37for (int i = 0; i < nums.size(); i++) 42}

43//

如果沒有即負數

44if (middle == -1

) 47

//這裡開始遍歷

48for (int i = 0; i < middle; i++)

52int left = i + 1;53

int right = nums.size() - 1;54

while (left

55);

58 cout << left <

59 cout << right <

60while (left1

]) 63

while (left < right && nums[right] == nums[right - 1

]) 66 left = left + 1

;67 right = right - 1;68

}69else

if (nums[i] + nums[left] + nums[right] > 0

) 72

else75}

76}7778

return

three;79}

80};

8182

intmain() ;

85 vectorint>>num=sol.threesum(nums);

86for (int i = 0; i < num.size(); i++)

91 }

view code

1 #include2 #include3 #include4

using

namespace

std;

5class

solution ;

10int middle=-1;11

//排序並

12sort(nums.begin(), nums.end());

13//

將0進行留乙個處理 並記錄0的個數

14for (int i = 0; i < nums.size(); i++)

20if (nums[i] == 0&&zero[0]!=-1

) 24

if (zero[0] != -1&&zero[2]==num) 27}

28if (zero[2] > 1

) 31

//如果0的個數大於2 即有000存在

32if (zero[2] > 2

) );34}

35//

找到中間

36for (int i = 0; i < nums.size(); i++) 41}

42if (middle == -1

) 45

//左遍歷

46for (int i = 0; i < middle; i++)

50for (int j = i+1; j < middle; j++)

54 vector::iterator result =find(nums.begin() + middle, nums.end(), -(nums[i]+nums[j]));

55if (result !=nums.end()) );57}

58}59}

60//

右遍歷61

for (int i = middle; i < nums.size(); i++)

65for (int j = i + 1; j < nums.size(); j++)

69 vector::iterator result = find(nums.begin(), nums.begin() + middle, -(nums[i] +nums[j]));

70if (result != nums.begin() +middle) );72}

73}74}

75return

three;76}

77};

7879

intmain() ;

82 vectorint>>num=sol.threesum(nums);

83for (int i = 0; i < num.size(); i++)

88 }

view code

力扣15 三數之和

給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 題解 這題wa了好多...

力扣 15 三數之和

給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 請你找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。示例 給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 思路 排序 雙指...

力扣15 三數之和 C

這道題兩個難點。第乙個是不能使用三層迴圈,因為會時間溢位,第二個也是主要的問題如何去重。一開始想要直接排序後去重,但是這樣的話會缺失解,比如這個解就得不到,所以不能直接去重。後來想到了可以判斷nums i 與nums i 1 是否相同,如果相同可以進行i 這樣就可以去重了,但這只是死一次去重,要用不...