leetcode
某热心知名群众
当程序员写出了一个对象
展开
-
LeetCode-加油站
题意即有一个无限油箱的小车在很长的一段环路上行驶,途中有加油站,加油站可以补给一次汽油,小车刚开始没有油,可以任意选择某个加油站作为出生点,问小车在哪个点能够绕环路一圈?若存在,请给出第一个点的位置输入:①加油站储存的汽油数②加油站之间的汽油损耗数输出:第一个可行加油站的位置或不存在,即-1思路如果用暴力解法,可以在O(N2)O(N^2)O(N2)时间复杂度解决,但是可以观察到计算不同出生点的过程中包含一些重复的计算量,因此启发我们可以根据之前点的计算跳过后续某些加油站参考证明证:对于某一个原创 2020-11-18 10:51:03 · 349 阅读 · 1 评论 -
LeetCode-自由之路
题目用游戏场景来介绍题意还挺好玩的视频游戏“辐射4”中,任务“通向自由”要求玩家到达名为“Freedom Trail Ring”的金属表盘,并使用表盘拼写特定关键词才能开门。给定一个字符串 ring,表示刻在外环上的编码;给定另一个字符串 key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring 的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转 ring 以使 key 的一个字符在 12:00 方向对齐,然后按下中心按钮,以此逐个拼写完 key 中的所原创 2020-11-11 11:36:37 · 272 阅读 · 0 评论 -
八大排序算法
概览快速排序:是目前基于比较的内部排序中最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短算法实现插入排序思想:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录开始逐个进行插入,直至整个序列有序为止时间复杂度:O(N2)O(N^2)O(N2)直接插入排序示例:如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的func InsertSort原创 2020-07-15 22:06:58 · 407 阅读 · 0 评论 -
Leetcode(9)——设计
格式:题号+题名+简单思路+codeT146: LRU缓存机制Least Recently UsedO(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 · 188 阅读 · 0 评论 -
Leetcode(8)——数学相关问题
格式:题号+题名+简单思路+codeT204: 计数质数埃拉托色尼筛选法若一个数是质数,则其从2开始的倍数应该是合数范围可以缩小到i2i^2i2O(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 · 266 阅读 · 0 评论 -
Leetcode(7)——动态规划和贪心算法
格式:题号+题名+简单思路+codeT435: 无重叠区间以最小右端点开始贪心遍历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 · 352 阅读 · 0 评论 -
Leetcode(6)——字符串
格式:题号+题名+简单思路+codeT5: 最长回文子串遍历每一个(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 · 151 阅读 · 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 · 3715 阅读 · 0 评论 -
Leetcode(4)——堆和优先队列
格式:题号+题名+简单思路+codeT743: 网络延迟时间暴力遍历每一条可以被放松的路径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 · 227 阅读 · 0 评论 -
Leetcode(3)——二叉树
格式:题号+题名+简单思路+codeT96: 给出不同的二叉搜索树数目利用了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 · 295 阅读 · 0 评论 -
Leetcode(2)——链表
格式:题号+题名+简单思路+codeT19: 删除倒数第n个节点快慢双指针注意头节点的删除/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func removeNthFromEnd(head *ListN...原创 2020-05-07 19:10:57 · 259 阅读 · 0 评论 -
Leetcode(1)——数组、栈、队列
格式:题号+提名+简单思路+codeT1: 两数之和原创 2020-05-07 18:34:52 · 429 阅读 · 0 评论