
LeetCode
HWQlet
这个作者很懒,什么都没留下…
展开
-
刷题 9/20
子集链接:题目链接题目描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解题思路—回溯递归这种列举可能情况的,大多都可以往回溯递归上面靠一靠回溯递归,我们主要看它的调用栈,回溯就是出栈代码实现class Solution: def subsets(self, nums原创 2020-09-20 19:31:06 · 145 阅读 · 0 评论 -
刷题 9/19
K个一组翻转链表链接:题目链接题目描述给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5解题思路—普通逻辑,hard题这题的思想原创 2020-09-19 09:23:24 · 212 阅读 · 0 评论 -
刷题 9/18
合并k个有序链表链接:题目链接题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6解题思路—小根原创 2020-09-18 20:55:16 · 224 阅读 · 0 评论 -
刷题 9/16
组数总和链接:题目链接题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[[7],[2,2,3]]解题思路—回溯我们可以定义一个闭包函数,然后参数是这原创 2020-09-16 20:29:02 · 169 阅读 · 0 评论 -
刷题 9/15
58同城笔试运算符优先级:num++%5是多少,单目乘除位关系,逻辑三目后赋值排序的稳定性:IP协议:Java的ArrayList和LinkedList的区别:前序,中序求后序遍历kill某个pid的进程:kill -9 pid或者kill -15 pid,可以通过kill -l来看kill的各种信号Java的try。。。catch。。。finally,finally无论如何都会执行,当 catch 体里有 return,finally 体的代码块将在 catch 执行 return原创 2020-09-15 16:26:32 · 233 阅读 · 0 评论 -
刷题 9/14
新浪笔试如何删除一个非空子目录/tmp:rm -rf /tmp栈的出栈,入栈序列2道智力题:青蛙爬井,买房子计算机网络的302:临时重定向TCP编程中,程序员要做的的事:确定数据格式ping程序使用的协议:ICMPCPU速度级别:在内存中拷贝1GB的文件大概1秒,不知道题意有没有理解错cron中的内存常驻程序daemon的作用:管理系统日常任务调度代码题:变态青蛙跳青蛙一次可以跳1,2,。。。n级台阶,问跳上n级台阶的跳法动态规划f(n)=2*f(n-1)反正就是先跳上1级,后原创 2020-09-14 08:45:53 · 248 阅读 · 0 评论 -
刷题 9/13
最长公共前缀链接:题目链接题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。解题思路 — 纵向扫描,同一列每一行一开始想着可以直接用zip啊,纵向扫描思想确实是这样的,但是你要多少个变量来接受zip呢,这里就不好下手所以我们想到用any函数,any的原创 2020-09-13 13:05:26 · 173 阅读 · 0 评论 -
刷题 9/12
整数转罗马数字链接:题目链接题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII,原创 2020-09-13 12:56:05 · 234 阅读 · 0 评论 -
刷题 9/11
趋势科技校招笔试C++的字节对齐CSRF攻击发生在哪一层—会话层socket的方法使用:gethostbyname,getpeername这些的having和groupby的区别cpu长时间占用90%可能的原因:应该不是和IO有关的比如下载文件和写入文件,应该是绘画图像,计算相关的能确保线程由运行态变成其他状态的接口函数有哪些–运行–>挂起;运行–>阻塞;运行–>就绪;运行–>终止Linux中system和exec的区别代码题:给定中序和后序结果,输出前序遍历的结果原创 2020-09-13 08:06:15 · 910 阅读 · 0 评论 -
9/10 刷题
360笔试360笔试的选择题是我做过最难的,代码题倒是还好循环队列的特点:队头指针和队尾指针指向同一个单元的时候不一定是队满或者队空,可以通过取模的运算来实现逻辑循环Java中的原始数据类型有什么特点有向图中出度为s,则入度为多少?使用游标的5个步骤:声明,打开,读取,关闭,删除(释放)栈链:通过链表实现的栈,可以在任意位置出栈,可用于协程这种切换C++指针相关C++中四种强制转换:用于类型强转的是static_类,对象,实例关系和区别:类是模版,对象是new 过的类 (包含 可以实例化原创 2020-09-12 10:04:18 · 232 阅读 · 0 评论 -
9/9 刷题
回文数链接:题目链接题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:你能不将整数转为字符串来解决这个问题吗?解题思路–普通逻辑我们可以不用转换成字符串原创 2020-09-11 10:31:00 · 150 阅读 · 0 评论 -
9/8 刷题
Z字形变换题目来源:题目链接题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows)原创 2020-09-11 08:30:01 · 218 阅读 · 0 评论 -
刷题--9/7
发现了自己面试不上的原因,代码题刷的不够在这里写博客激励自己每天刷题,刷题在精不在多,要的是长期坚持不懈,同级的软件工程的同学进了字节,看她的面经,在后端缓存,数据库,安全,消息队列,OS,计算机网络其实大差不差,只要能进入笔试,说明你的简历没什么大问题,然而我不能进大厂的原因感觉主要就是刷题了,她已经刷了300多道了,能坚持半年我也是自愧不如,双非本科进大厂确实不容易,我才只做了剑指offer的70题。如果时间充足建议,一个标签一个标签的刷,比如说动态规划,递归,回溯,栈,队列这些,一个个逐个击破,但原创 2020-09-07 16:52:46 · 268 阅读 · 0 评论 -
腾讯面试的一个题目
腾讯研发面试题:根据上排给出10个数,在其下排填出对应的十个数字,要求:下排每个数都是上排那十个数在下排出现的次数。上排的十个数如下:[0,1,2,3,4,5,6,7,8,9],选择正确结果并写出算法下排的十个数是:[6,2,1,0,0,0,0,1,0,0](这其实就是一种正确结果了)解题思路:below的意思是0在below出现了6次,所以below[0] = 6,1在below中出现了2次,所以below[1] = 2。。。常规思路的就用两层循环但是哈希思想只需要一轮遍历:原创 2020-06-16 23:04:24 · 252 阅读 · 0 评论 -
leetcode--二叉搜索数的最近公共祖先,普通二叉树的最近公共祖先(递归,后序遍历)
题目来源:链接题目描述:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和节点 8 的最近公共祖先是 6。代码实现:de..原创 2020-06-16 19:55:19 · 228 阅读 · 0 评论 -
leetcode--股票的最大利润(动态规划)
题目来源:链接题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。代码实现:def func(prices): cost, profit = 9999,0 ...原创 2020-06-14 17:30:14 · 601 阅读 · 0 评论 -
leetcode--圆圈中最后剩下的数字(约瑟夫环问题)
题目来源:链接题目描述:0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。代码实现:def func(n,m): res = 0 for i in range(2,n+1): res = (m+res)%i return res.原创 2020-06-14 17:21:47 · 276 阅读 · 0 评论 -
leetcode--扑克牌中的顺子
题目来源:链接题目描述:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例1:输入: [1,2,3,4,5]输出: True代码实现:def func(nums): set_poke = set() maxi,mini = 0,14 for num in nums: if num == 0: .原创 2020-06-14 17:02:10 · 469 阅读 · 0 评论 -
leetcode--n个骰子的点数(动态规划)
这两天做虚拟化的openstack实验,头秃,赶快做点题目题目来源:链接题目描述:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。代码实现:def func(n): dp = [0] * (6*n+1) for i in range(1,7): dp[i] = 1/6 for..原创 2020-06-14 16:54:37 · 466 阅读 · 0 评论 -
leetcode--队列的最大值(单调栈)
题目来源:链接题目描述:请定义一个队列并实现函数 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,.原创 2020-06-12 12:23:16 · 258 阅读 · 0 评论 -
leetcode--翻转单词顺序(双指针)
题目来源:链接题目描述:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "the sky is blue"输出: "blue is sky the"代码实现:def func(s): s = s.strip() i = j = len(s)-1 res = [] while i.原创 2020-06-12 11:11:08 · 332 阅读 · 0 评论 -
leetcode--和为s的连续正数序列(滑动窗口,双指针)
题目来源:链接题目描述:输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]代码实现:def func(target): i,j,res = 1,2,[] while j <= target//2+1: c_sum = sum(range(i,j+1))..原创 2020-06-12 11:01:32 · 202 阅读 · 0 评论 -
leetcode--和为s的两个数字(双指针,对撞指针)
题目来源:链接题目描述:难度简单21输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]代码实现:def func(nums,target): i,j = 0,len(nums)-1 while i < j: s = nums[i]+nums[j...原创 2020-06-12 10:48:28 · 220 阅读 · 0 评论 -
leetcode--找数组中两个出现一次的数字(分组异或,位运算)
题目来源:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。题目描述:示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]代码实现:def func(nums): ret = functools.reduce(lambda x,y:x^=y,nums) ins = 1 while ins&ret == 0:原创 2020-06-12 10:37:03 · 312 阅读 · 0 评论 -
leetcode--二叉树的深度,判断是否是平衡二叉树(递归)
题目来源:链接题目描述:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。代码实现:def depth(root): if not root: return 0 return max(depth(root.left),depth(root.right))+1解题思路:简单的递归求树深,注意递归函数首先要确定递归结束条件题目来源:链接题目描述:输入一棵二叉树.原创 2020-06-11 20:18:37 · 284 阅读 · 0 评论 -
leetcode--二叉搜索树的第K大节点(中序遍历)
题目来源:链接题目描述:给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4代码实现:def func(root,k): def dfs(root): if not root: return None dfs(root.right) if self.k == 0: .原创 2020-06-11 20:08:44 · 340 阅读 · 0 评论 -
leetcode--0~n-1中缺失的数据(二分法)
题目来源:链接题目描述:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。代码实现:def func(nums): i,j = 0,len(nums)-1 while i <= j: m = (i+j)//2 if nums[m] == m: i = m+1 else: .原创 2020-06-11 20:00:05 · 307 阅读 · 0 评论 -
leetcode--在排序数组中查找数字(二分查找)
题目来源:链接题目描述:统计一个数字在排序数组中出现的次数。示例 1:输入:nums = [5,7,7,8,8,10],target = 8输出:0代码实现:def func(nums,target): def handler(tar): i,j = 0, len(nums)-1 while i<=j: m = (i+j)//2 if nums[m]<=tar: .原创 2020-06-11 19:29:44 · 211 阅读 · 0 评论 -
leetcode--两个链表的公共节点(数据结构问题)
题目来源:链接题目描述:输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。代码实现:def func(headA,headB): node1, node2 = headA,headB while node1 != node2: node1 = node1.next if node1 else headB node2 = node2.next if node2 else headA retur原创 2020-06-11 19:21:08 · 267 阅读 · 0 评论 -
leetcode--第一次只出现一次的字符(有序字典)
题目来源:链接题目描述:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = "abaccdeff"返回 "b"s = "" 返回 " "代码实现:def func(s): dic = collections.OrderedDict() for c in dic: dic[c] = not c in dic for k,v in dic.items(): if v:原创 2020-06-11 19:16:43 · 250 阅读 · 0 评论 -
leetcode--二叉树中和为某一值的路径(递归+回溯)
题目来源:链接题目描述:输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ ...原创 2020-06-10 08:42:51 · 347 阅读 · 0 评论 -
leetcode--丑数(动态规划)
题目来源:链接题目描述:我们把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。代码实现:def nthUglyNumber(self, n: int) -> int: dp,a,b,c = [1]*n,0,0,0 for i in range(1,n):原创 2020-06-10 09:04:59 · 414 阅读 · 1 评论 -
leetcode--最长不含重复字符的子字符串(动态规划+双指针)
题目来源:链接题目描述:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为3代码实现:def lengthOfLongestSubstring(self, s: str) -> int: dic = {} res,tmp = 0,0 for j in range(len(s)):..原创 2020-06-10 08:24:58 · 294 阅读 · 0 评论 -
leetcode--礼物的最大价值
题目来源:链接题目描述:在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物代码实现:def maxValue(self, g...原创 2020-06-10 08:24:45 · 201 阅读 · 0 评论 -
leetcode--把数字翻译成字符串(动态规划)
题目来源:链接题目描述:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"实现代码:def translateNum(self, num: i.原创 2020-06-10 08:24:28 · 300 阅读 · 0 评论 -
leetcode--把数组排成最小的数(自定义排序)
题目来源:链接题目描述:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"实现代码:def minNumber(self, nums: List[int]) -> str: def sort_rule(x,y): a,b = x+y,y+x if a>b: return 1原创 2020-06-10 08:24:13 · 352 阅读 · 0 评论 -
leetcode--数字序列中某一位的数字
题目来源:链接题目描述:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。实现代码:def findNthDigit(self, n: int) -> int: # 分三步,找到那个阶段的每个数字的位数 # 然后找到具体属于哪个数字 # 最后找到在具体数字的哪个位 .原创 2020-06-10 08:24:00 · 223 阅读 · 0 评论 -
leetcode--1~n整数中,1出现的次数
题目来源:链接题目描述:输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5实现代码:def countDigitOne(self, n: int) -> int: digit,res = 1,0 high,cur,low = n//10,n%10,0 while high != 0原创 2020-06-10 08:23:44 · 424 阅读 · 0 评论 -
leetcode--连续子数组的最大和(动态规划)
题目来源:链接题目描述:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6代码实现:def maxSubArray(self, nums: List[int]) -> int: for i in range(1,len(num...原创 2020-06-09 09:23:06 · 454 阅读 · 0 评论 -
leetcode--最小的k个数(top K问题,快排 || 堆排序 || 计数排序)
题目来源:链接题目描述:输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。限制:0 <= k <= arr.length <= 10000 0 <= arr[i]<= 10000实现代码:计数排序:def partition(self,arr,first,last): bloom = [0 for _ in range(10000)] for i.原创 2020-06-09 09:12:31 · 486 阅读 · 0 评论