IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 算法题总结 -> 正文阅读

[数据结构与算法]算法题总结

n数之和

leetcode 1 号算法题:两数之和 (哈希表 时间O(n),空间O(n))
leetcode 167 号算法题:两数之和Ⅱ - 输入有序数组 (二分 O(nlogn),O(1) 双指针O(n), O(1))
leetcode 170 号算法题:两数之和Ⅲ - 数据结构设计
leetcode 653 号算法题:两数之和Ⅳ - 输入 BST (由于是BST,中序遍历+双指针或哈希)
leetcode 15 号算法题:三数之和 (排序+双指针 O(n^2), O(1))
剑指 Offer II 007. 数组中和为 0 的三个数 (排序+双指针 O(n^2), O(1))
leetcode 18 号算法题:四数之和

暴力

递归遍历k个元素组合的全排列模板
剑指 Offer II 080. 含有 k 个元素的组合
给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。

res = []
path = []
def dfs(idx):
	if len(path) == k:
		res.append(path[:])
		return 
	if idx == n+1:
		return 
	dfs(idx+1)
	path.append(idx)
	dfs(idx+1)
	path.pop()
dfs(1)

时间复杂度O(2的n次方):每个数字都有两种选择,空间复杂度O(n),为递归深度

之后,我们可以根据所有的组合可能来筛选出k的元素之和

双指针、三指针

排序+二分查找

#先来个快排,或者直接用sort
# O(nlog(n))
def quick_sort(l,r):
	if l>=r:
		return 
	i,j = l,r
	mid = num[l]
	while num[j] >= mid:
		j -=1
	num[l],num[r] = num[r],num[l]
	while num[i]<=mid:
		i+=1
	num[l],num[r] = num[r],num[l]
	quick_sort(l,i)
	quick_sort(i+1,r)
quick_sort(0,len(nums)-1)
#二分查找
#两数之和直接二分,O(n)
#三数之和类似,循环第一位然后再二分,O(n^2)
#这里以三数之和为例
res = []
#O(n)
for i in range(len(nums)-2):
	l,r = i+1, len(nums)-1
	# O(n)
	while l<r:
		if nums[r] + nums[l] < target - nums[i]:
			l+=1
		elif nums[r] + nums[l] > target - nums[i]:
			r-=1
		else:
			if [nums[i],nums[l],nums[r]] not in res:
				res.append([nums[i],nums[l],nums[r]])
			l+=1
			r-=1
return res
			

明天更

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-27 13:04:40  更:2021-10-27 13:06:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:21:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码