LeetCode
huangrs098
这个作者很懒,什么都没留下…
展开
-
【LeetCode】Python代码实现 之 237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。 示例 1: 输入:head = [4,5,1,9], node = 5 输出:[4,1,9] 解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 示例 2: 输入:head = [4,5,1,9], node = 1 输出:[4,5,9] 解释:给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5原创 2020-11-30 17:07:59 · 262 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 141. 环形链表(检测单链表是否有环, 判断链表中是否有环)
给定一个链表,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部原创 2020-11-30 16:39:20 · 250 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题67. 把字符串转换成整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。 注意:假如该字符串中的第一个非空原创 2020-06-28 11:52:02 · 187 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题64. 求1+2+…+n
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 示例 1: 输入: n = 3 输出: 6 示例 2: 输入: n = 9 输出: 45原创 2020-06-24 10:15:37 · 182 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题63. 股票的最大利润
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 示例 2: 输入: [7,6,4,3,1] 输出: 0 解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。 解答: 前i日最大利润=max(前(i−1)原创 2020-06-23 11:44:56 · 323 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题61. 扑克牌中的顺子
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 1: 输入: [1,2,3,4,5] 输出: True 示例 2: 输入: [0,0,1,2,5] 输出: True 解答: set加遍历 满足下面两个条件,则为顺子: 1 除大小王外,所有牌 无重复 ; 2 设此 55 张牌中最大的牌为 max,最小的牌为 min (大小王除外),则需满足: max - min &l原创 2020-06-22 11:16:01 · 314 阅读 · 2 评论 -
【LeetCode】Python代码实现 之 面试题59 - II. 队列的最大值
请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 1: 输入: [“MaxQueue”,“push_back”,“push_back”,“max_value”,“pop_front”,“max_value”] [[],[1],[2],[],[],[]] 输出: [null,null,null,2,1,2] 示例原创 2020-06-19 15:10:47 · 142 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 示例 1: 输入: s = “abcdefg”, k = 2 输出: “cdefgab” 示例 2: 输入: s = “lrloseumgh”, k = 6 输出: “umghlrlose” 解答: 字符串切片: def reverse_left_word(s, n): return s[n:] +原创 2020-06-17 09:41:39 · 129 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题58 - I. 翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 示例 1: 输入: “the sky is blue” 输出: “blue is sky the” 示例 2: 输入: " hello world! " 输出: “world! hello” 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: “a good原创 2020-06-16 14:56:29 · 217 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题57 - II. 和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1: 输入:target = 9 输出:[[2,3,4],[4,5]] 示例 2: 输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]] 解答: 滑动窗口法 def find_continuous_sequence(target): i, j, res = 1, 2, [] # 滑动窗口的右原创 2020-06-16 10:57:24 · 129 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题57. 和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2] 示例 2: 输入:nums = [10,26,30,31,47,60], target = 40 输出:[10,30] 或者 [30,10] 解答: 定义两个指针i,j,从一头和一尾开始遍历。如果两数之和小于s,则i加1, 如果两数之和大于s,则j减1 Python代码原创 2020-06-15 11:13:12 · 136 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题55 - I. 二叉树的深度
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 解答: 树的遍历的方法可以分为:深度优先搜索(DFS),广度优先搜索(BFS) DFS包括:先序遍历,中序遍历,后序遍历 BFS包括:层序遍历 解法1:DFS,树的深度为左子树和右子树深度的最大值加1. 解法2:BFS,每遍历一层,计数器原创 2020-06-04 11:23:54 · 139 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题54. 二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。 示例 1: 输入: root = [3,1,4,null,2], k = 1 3 / 1 4 2 输出: 4 示例 2: 输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / 3 6 / 2 4 / 1 输出: 4 解答: 解法基于此性质:二叉搜索树的中序遍历为 递增序列 。 根据以上性质,易得二叉搜索树的 中序遍历倒序 为 递减序列 。 因此,求 “二叉搜索树第 k大的节点” 可转化为求 “此树的中序遍原创 2020-06-03 17:50:10 · 254 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题53 - II. 0~n-1中缺失的数字
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例 1: 输入: [0,1,3] 输出: 2 示例 2: 输入: [0,1,2,3,4,5,6,7,9] 输出: 8 算法解析: 初始化: 左边界 i = 0,右边界 j = len(nums) - 1;代表闭区间 [i, j]。 循环二分: 当i≤j 时循环 (即当闭区间 [i,j] 为空时跳出) ; 1 计算中点 m = (i + j)原创 2020-06-03 17:17:10 · 164 阅读 · 2 评论 -
【LeetCode】Python代码实现 之 面试题53 - I. 在排序数组中查找数字
统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2: 输入: nums = [5,7,7,8,8,10], target = 6 输出: 0 解答: # 方法1,使用二分查找与递归 count = 0 def search(nums, target): global count if len(nums) == 0: return 0 # 二分查找 mid = len(nums)//原创 2020-06-02 15:09:01 · 112 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题52. 两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共节点。 如下面的两个链表: 在节点 c1 开始相交。 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 输出:Reference of the node with value = 8 输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1原创 2020-06-02 11:50:10 · 126 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题51. 数组中的逆序对------------暴力解法
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 解答: # 方法1 # 先上暴力解法(依次遍历数组,查看后面的是否小于前面的值) def reverse_pairs(l): num = 0 for i in range(len(l)): for j in range(i+1, len(l)): if l[i] > l[原创 2020-06-02 11:45:01 · 141 阅读 · 0 评论 -
【LeetCode】Python代码实现 之 面试题50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 示例: s = “abaccdeff” 返回 “b” s = “” 返回 " " 限制: 0 <= s 的长度 <= 50000 解答: # 方法1 # dic存入的数据为{"a" :Flase, "b": True, "c" :Flase, "d": True, "e": True, "f" : Flase} # 返回第一个value值为True的字符 def first_uniq_char(s):原创 2020-06-02 11:09:00 · 300 阅读 · 0 评论