• LeetCode-15-3sum


    LeetCode-15-3sum

    一、题目描述

      给定一个int类型的数组,找出其中的3个元素a,b,c,使a+b+c=0。找出所有的这样的三元组

      exapmle:

      给定数组:S = [-1, 0, 1, 2, -1, -4]

      返回值:

      [
        [-1, 0, 1],
        [-1, -1, 2]
      ]

    二、题目解答

      先进行排序,然后确定第一个数的位置,剩下两个位置采用两边逼近的方式。

    vector<vector<int>> threeSum(vector<int>& nums) {
    	vector<vector<int>> result;
    	sort(nums.begin(), nums.end());
    	int i = 0;
    	int last = nums.size() - 1;
    	while (i < last) {
    		int a = nums[i];
    		int j = i + 1;
    		int k = last;
    		while (j < k) {
    			int b = nums[j];
    			int c = nums[k];
    			int sum = a + b + c;
    			if (sum == 0)
    				result.push_back({a,b,c});
    			if (sum <= 0)
    				while (nums[j] == b && j < k)
    					j++;
    			if (sum >= 0)
    				while (nums[k] == c && j < k)
    					k--;
    		}
    		while (nums[i] == a && i < last)
    			i++;
    	}
    	return result;
    }
    

      

  • 相关阅读:
    批处理
    命名规则
    注释
    HTML DOM属性
    OLTP
    修改HTML元素
    HTML
    工具资源系列之给虚拟机装个centos
    工具资源系列之给虚拟机装个windows
    工具资源系列之给mac装个虚拟机
  • 原文地址:https://www.cnblogs.com/likaiming/p/8075633.html
Copyright © 2020-2023  润新知