- 博客(7)
- 收藏
- 关注
原创 牛客网编程常见输入输出练习场
A+B(1) import sys for line in sys.stdin: a, b = map(int,line.split()) print(a + b)
2020-08-23 09:21:24
1544
原创 第三章:双指针技巧总结
双指针技巧总结 141. 环形链表 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def hasCycle(self, head): """ :type head: ListNode
2020-08-12 18:16:14
151
原创 第二章:二叉搜索树操作集锦
labuladong 二叉搜索树操作集锦 二叉树 二叉树算法设计的总路线:把当前节点要做的事做好,其他的交给递归框架,不用当前节点操心。 (可以理解成递归方法的应用) 明确递归结束的条件 (已经到了叶子节点) 把root该做的事情做完, 然后左右子节点递归调用该方法 如果当前节点会对下面的子节点有整体影响,可以通过辅助函数增长参数列表,借助参数传递信息。 void traverse(TreeNode root) { // root 需要做什么?在这做。 // 其他的不用 ro
2020-08-02 13:24:02
146
原创 第一章:动态规划和回溯算法到底谁是谁爹?
labuladong动态规划和回溯算法到底谁是谁爹? 494. 目标和 方法1:动态规划(dp二维数组) dp[i][j]表示 数组中前i个元素组成和为j的方案数 base case: 首先初始化数组第0行。如果第一个元素为0,则dp[0][total]=2 (-0 和+0 都为0,所以先初始化为2) 比如 [0,1,2], 目标和为3,则有-0+1+2=3,+0+1+2=3 否则和为±nums[0] 的位置的方案数置为1 if nums[0]==0:
2020-07-30 11:19:09
259
原创 Python实现的经典排序算法
来源:Python 实现的十大经典排序算法 选择排序 对每一个nums[i], 寻找 range(i,n) 范围内比nums[i]大的数,并与之交换 以此类推,位置 i 处就是 第i 小的数 两次for循环,时间复杂度为 O(n2)O(n^2)O(n2) def selection_sort(nums): n = len(nums) for i in range(n): for j in range(i, n): if nums[i] >
2020-07-22 18:29:12
155
原创 搜索旋转排序数组系列
153. 寻找旋转排序数组中的最小值 二分查找过程中,比较mid与right(而非left)的原因: 以 [1,2,3,4,5,6,7] 为例,分以下情况 若[1,2,3,4,5,6,7] 左<中,中<右。最小值在最左边, 所以更新 右指针 若[6,7,1,2,3,4,5] 左>中,中<右。最小值在mid左边,所以更新 右指针 若[4,5,6,7,1,2,3] 左<中,中>右。最小值在mid右边,所以更新 左指针 可见,当中<右时(情况1,2),都是更新
2020-07-18 19:22:13
96
原创 第四章:如何判断回文链表
labuladong如何判断回文链表 方法1:链表转列表,双指针逼近 将链表转化为列表,然后利用左右双指针技巧,从两端到中间逼近 # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x): # self.val = x # self.next = None class Solution(object): def isPalindrome(sel
2020-07-14 10:24:43
151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人