当前位置: 首页 > news >正文

LeetCode -- Three Sum


问题描述: 在一个序列中找到3个数和等于N的所有组合(3个数升序排列,去重)
思路:
1 内循环使用two pointer ,从两端往中间找,判断和分别等于,小于,大于0的情况
2 外循环逐个后移
3 使用字典存键值=三个数的升序排列,解决重复问题


最坏情况: O(N²)


实现代码:



public IList<IList<int>> ThreeSum(int[] nums)
{
    if(nums == null || nums.Length < 3){
		return new List<IList<int>>();
	}
	
	var dic = new Dictionary<string, List<int>>();
	var list = nums.OrderBy(x=>x).ToList();
	
	var len = list.Count;
	for (var i = 0 ;i <= len - 3 ;i++){
		var a = list[i];
		var start = i+1;
		var end = len-1;
		while (start < end) {
		var b = list[start];
		var c = list[end];
		if (a+b+c == 0) {
			var v = new List<int>(){a,b,c}.OrderBy(x=>x).ToList();
			var k = string.Join(",",v);
			if(!dic.ContainsKey(k)){
				dic.Add(k,v);
			}
			start ++;
			end --;
		}
		else if (a+b+c > 0){
			end --;
		}
		else{
			start ++;
		}
	}
}
	
	var ret = new List<IList<int>>();
	foreach(var kv in dic){
		ret.Add(kv.Value);
	}
	
	return ret;
}


相关文章:

  • SQL2005CLR函数扩展-字符串函数
  • 算法面试题-- 连接树的所有兄弟节点
  • 怀念穆大叔
  • LeetCode -- Flatten 二叉树
  • [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
  • LeetCode -- 查找最小公共祖先
  • 8位程序员对Oracle收购Sun的担忧与期待
  • LeetCode -- 顺时针旋转图片90度
  • LeetCode -- Path Sum ||
  • 35岁IT“老人”的随笔
  • LeetCode -- Decode Ways
  • 嵌入式Linux系统中的GUI系统的研究与移植
  • LeetCode -- Substring with Concatenation of All Words
  • asp.net MVC5 sitemap 的使用
  • CentOS 5.x 預設啟動的服務簡易說明
  • Docker容器管理
  • ES6简单总结(搭配简单的讲解和小案例)
  • Fastjson的基本使用方法大全
  • Iterator 和 for...of 循环
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Just for fun——迅速写完快速排序
  • Markdown 语法简单说明
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • Python进阶细节
  • vuex 笔记整理
  • 程序员该如何有效的找工作?
  • 大快搜索数据爬虫技术实例安装教学篇
  • 分享一份非常强势的Android面试题
  • 简析gRPC client 连接管理
  • 如何解决微信端直接跳WAP端
  • 通信类
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 优秀架构师必须掌握的架构思维
  • 阿里云API、SDK和CLI应用实践方案
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (Git) gitignore基础使用
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (定时器/计数器)中断系统(详解与使用)
  • (二)linux使用docker容器运行mysql
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (力扣)循环队列的实现与详解(C语言)
  • (南京观海微电子)——COF介绍
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转载)利用webkit抓取动态网页和链接
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • @Autowired注解的实现原理
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务