
leetcode
某热心知名群众
当程序员写出了一个对象
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode-加油站
题意 即有一个无限油箱的小车在很长的一段环路上行驶,途中有加油站,加油站可以补给一次汽油,小车刚开始没有油,可以任意选择某个加油站作为出生点,问小车在哪个点能够绕环路一圈?若存在,请给出第一个点的位置 输入:①加油站储存的汽油数 ②加油站之间的汽油损耗数 输出:第一个可行加油站的位置或不存在,即-1 思路 如果用暴力解法,可以在O(N2)O(N^2)O(N2)时间复杂度解决,但是可以观察到计算不同出生点的过程中包含一些重复的计算量,因此启发我们可以根据之前点的计算跳过后续某些加油站 参考证明 证:对于某一个原创 2020-11-18 10:51:03 · 440 阅读 · 1 评论 -
LeetCode-自由之路
题目 用游戏场景来介绍题意还挺好玩的 视频游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。 给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。 最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所原创 2020-11-11 11:36:37 · 347 阅读 · 0 评论 -
八大排序算法
概览 快速排序:是目前基于比较的内部排序中最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短 算法实现 插入排序 思想:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录开始逐个进行插入,直至整个序列有序为止 时间复杂度:O(N2)O(N^2)O(N2) 直接插入排序示例: 如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的 func InsertSort原创 2020-07-15 22:06:58 · 607 阅读 · 0 评论 -
Leetcode(9)——设计
格式: 题号+题名+简单思路+code T146: LRU缓存机制 Least Recently Used O(1)→哈希双链表 自己构造双链表 type Node struct { key int value int prev *Node next *Node } type BiList struct { head *Node tail *Node } func BuildBiList() BiList { return BiList{ni原创 2020-06-01 11:11:31 · 230 阅读 · 0 评论 -
Leetcode(8)——数学相关问题
格式: 题号+题名+简单思路+code T204: 计数质数 埃拉托色尼筛选法 若一个数是质数,则其从2开始的倍数应该是合数 范围可以缩小到i2i^2i2 O(nloglogn)时间复杂度 (n∗∑PrimeNumber12+13+15+17+...+1maxPrimen*\sum_{PrimeNumber}{\frac{1}{2}+\frac{1}{3}+\frac{1}{5}+\frac{1}{7}+...+\frac{1}{maxPrime}}n∗∑PrimeNumber21+31+51+原创 2020-05-12 20:33:37 · 319 阅读 · 0 评论 -
Leetcode(7)——动态规划和贪心算法
格式: 题号+题名+简单思路+code T435: 无重叠区间 以最小右端点开始贪心遍历 class Solution: def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: if len(intervals)==0: return 0 s_intervals=sorted(intervals,key=lambda x:x[1]) co原创 2020-05-11 23:34:38 · 431 阅读 · 0 评论 -
Leetcode(6)——字符串
格式: 题号+题名+简单思路+code T5: 最长回文子串 遍历每一个(i,j)中心的回文子串的长度 class Solution: def longestPalindrome(self, s: str) -> str: self.s=s ans="" for i in range(len(s)): s1=self.findPalindrome(i,i) s2=self.findPalind原创 2020-05-10 00:54:26 · 178 阅读 · 0 评论 -
Leetcode(5)——遍历,并查集,回溯法和二分查找
格式: 题号+题名+简单思路+code 回溯思想 终止条件 选择列表 当前路径的记录 更新和撤销 T46: 全排列 注意切片指针/深拷贝 func permute(nums []int) [][]int { curr:=[]int{} ans:=[][]int{} assist(nums, &curr, &ans) return ans } func assist(nums []int, curr *[]int, ans *[][]int) {原创 2020-05-09 11:00:44 · 3861 阅读 · 0 评论 -
Leetcode(4)——堆和优先队列
格式: 题号+题名+简单思路+code T743: 网络延迟时间 暴力遍历每一条可以被放松的路径 O(NN+Elog(E))O(N^N+Elog(E))O(NN+Elog(E)) 时间复杂度 var MAXINT int = int(^uint(0) >> 1) type Edge struct { to int time int } func networkDelayTime(times [][]int, N int, K int) int { distanc原创 2020-05-08 21:20:31 · 269 阅读 · 0 评论 -
Leetcode(3)——二叉树
格式: 题号+题名+简单思路+code T96: 给出不同的二叉搜索树数目 利用了BST的性质;这里为了避免重复计算,只算半边 记忆化递归 Catalan数 var memo map[int]int=map[int]int{0:1,1:1} func numTrees(n int) int { if v,ok:=memo[n];ok { return v }...原创 2020-05-07 21:08:19 · 361 阅读 · 0 评论 -
Leetcode(2)——链表
格式: 题号+题名+简单思路+code T19: 删除倒数第n个节点 快慢双指针 注意头节点的删除 /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func removeNthFromEnd(head *ListN...原创 2020-05-07 19:10:57 · 302 阅读 · 0 评论 -
Leetcode(1)——数组、栈、队列
格式: 题号+提名+简单思路+code T1: 两数之和原创 2020-05-07 18:34:52 · 466 阅读 · 0 评论