zoukankan      html  css  js  c++  java
  • 三数之和

    package main
    
    import "fmt"
    
    func calculate(nums []int) [][]int {
    	//[-1, 0, 1, 2, -1, -4]
    	var big_res [][]int
    	for i := 0; i < 2; i++ {
    		for j := i + 1; j < len(nums); j++ {
    			for k := i + 2; k < len(nums); k++ {
    				sum := nums[i] + nums[j] + nums[k]
    				if sum == 0 {
    					var res []int
    					res = append(res, nums[i], nums[j], nums[k])
    					big_res = append(big_res, res)
    				}
    
    			}
    
    		}
    
    	}
    	return big_res
    
    }
    
    func main() {
    
    	//给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?
    	//找出所有满足条件且不重复的三元组。
    
    	//注意:答案中不可以包含重复的三元组。
    
    	//示例:
    	//给定数组 nums = [-1, 0, 1, 2, -1, -4],
    	//满足要求的三元组集合为:
    	//[
    	//[-1, 0, 1],
    	//[-1, -1, 2]
    	//]
    	nums := []int{-1, 0, 1, 2, -1, -4}
    	res := calculate(nums)
    	//fmt.Println(res) //[[-1 0 1] [-1 2 -1] [-1 -1 2] [0 1 -1]]
    	//先排序,冒泡排序
    	for i := 0; i < len(res); i++ {
    		for j := 1; j < len(res[i]); j++ {
    			for k := 0; k < len(res[i])-j; k++ {
    				if res[i][k] > res[i][k+1] {
    					res[i][k+1], res[i][k] = res[i][k], res[i][k+1]
    				}
    			}
    
    		}
    
    	}
    	//fmt.Println(res) //[[-1 0 1] [-1 -1 2] [-1 -1 2] [-1 0 1]]
    	//把里面的切片变成数组
    	var splice [][3]int
    	for i := 0; i < len(res); i++ {
    		//fmt.Printf("%T
    ", res[i])
    		var arr [3]int
    		for j := 0; j < len(res[i]); j++ {
    			//var arr [3]int
    			arr[j] = res[i][j]
    		}
    		splice = append(splice, arr)
    		//fmt.Println(splice)
    	}
    	//去重
    	fmt.Println(splice) //[[-1 0 1] [-1 -1 2] [-1 -1 2] [-1 0 1]]
    	var s2 [][3]int
    	for i := 0; i < len(splice)-1; i++ {
    		//var arr2 [3]int
    		for j := i+1; j < len(splice); j++ {
    			if splice[i] == splice[j]{
    				s2 = append(s2, splice[i])
    			}
    		}
    	}
    	fmt.Println(s2) //[[-1 0 1] [-1 -1 2]]
    
    }
    

      

  • 相关阅读:
    python 函数参数
    文件操作总结
    时间模块总结
    代码编程规范
    javascript 学习
    Spring-扫描注解原理,注解自动扫描原理分析
    String中的intern方法
    Zookeeper服务注册与发现原理浅析
    一篇文章了解RPC框架原理
    如何设计一个秒杀系统
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12299609.html
Copyright © 2011-2022 走看看