C++ leetCode 15 給你一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。

1、C++

  


vector<vector<int>> threeSum(vector<int>& nums) {
	vector<vector<int>>res;
	sort(nums.begin(), nums.end());
	int n = nums.size();
	for (int i = 0; i < n - 2; i++)
	{
		int L = i + 1;
		int R = n - 1;
		if (nums[i] > 0) continue;
		while (L < R) {
			if (nums[i] + nums[L] + nums[R] == 0) {
				vector<int> resList = { nums[i],nums[L],nums[R] };
				res.push_back(resList);
			}
			if (nums[i] + nums[L] + nums[R] <= 0) {
				while (L <= n - 2 && nums[L] == nums[L + 1])
					L++;
				L++;
			}
			else {
				while (R >= 1 && nums[R] == nums[R - 1])
					R--;
				R--;
			}
		}
		while (i < n - 1 && nums[i] == nums[i + 1])
			i++;
	}
	return res;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章