LeetCode
文章平均质量分 54
凝眸伏笔
纵然伤心也不要愁眉不展,因为你不知道谁会爱上你的笑容。
展开
-
【LeetCode】字节面试-行、列递增的二维数组数字查找
以测试题为例:选取matrix左下角那个数18为起点,18 > 5说明target一定在数组的上方、故上移一行到10,同理直到 3 < 5说明target一定在该数右边、故右移一列到6,以此类推,直到找到target,若超出数组范围还没找到则返回False。由于数组是按序排列的,因此我们可以灵活的找到以一个数位起点,如target大于或小于该数,则查找范围减少一行或者一列。时间复杂度:O(n+m)。访问到的下标的行最多增加 n 次,列最多减少 m 次,因此循环体最多执行 n + m 次。原创 2022-08-21 22:55:25 · 1448 阅读 · 0 评论 -
【LeetCode】货拉拉面试-判断链表是否为回文链表-快慢指针
我们可以将链表的后半部分反转(修改链表结构),然后将前半部分和后半部分进行比较。我们也可以使用快慢指针在一次遍历中找到:慢指针一次走一步,快指针一次走两步,快慢指针同时出发。当快指针移动到链表的末尾时,慢指针恰好到链表的中间。通过慢指针将链表分为两部分。该方法虽然可以将空间复杂度降到 O(1),但是在并发环境下,该方法也有缺点。在并发环境下,函数运行时需要锁定其他线程或进程对链表的访问,因为在函数执行过程中链表会被修改。执行步骤一,我们可以计算链表节点的数量,然后遍历链表找到前半部分的尾节点。...原创 2022-08-13 14:56:49 · 169 阅读 · 0 评论 -
【LeetCode】陌陌面试-有序数组于其一个元素翻转后,判断一个数是否存在数组中,时间复杂度O(logn)
对于无重复的数组[6, 7, 8, 10,1, 2, 3, 4],如果满足 A[begin]原创 2022-08-13 14:45:13 · 379 阅读 · 0 评论 -
【LeetCode】金山面试-二分法计算整数的平方根-数组不连续元素的最大和
先去前[0,n-1]个数的最大值, 然后再取[1,n]的最大值,最后取两种方式取得的最大值的最大值,作为结果返回。给定一个非负整数 x ,计算并返回 x 的平方根,即实现 int sqrt(int x) 函数。如果平方根不是整数,输出只保留整数的部分,小数部分将被舍去。二分法,时间复杂度O(logn),空间复杂度O(1)正数的平方根有两个,只输出其中的正数平方根。取若干个元素,使其和最大,且不能取连续的数。给定一个正整数数组,......原创 2022-08-13 13:16:43 · 208 阅读 · 0 评论 -
【LeetCode】zj面试-把字符串转换成整数
在每轮数字拼接前,判断resres在此轮拼接后是否超过21474836472147483647,若超过则加上符号位直接返回。写一个函数StrToInt,实现把字符串转换成整数这个功能。不能使用atoi或者其他类似的库函数。...原创 2022-07-28 15:11:42 · 185 阅读 · 0 评论 -
【LeetCode】老虎证券面试-括号嵌套且满足优先级
给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。用栈的形式存储右括号,原创 2022-07-27 22:29:52 · 206 阅读 · 0 评论 -
MetaApp开发面试题目【LeetCode】
1.特例处理当树的根节点为空,则直接返回空列表[];2.初始化打印结果空列表res,包含根节点的双端队列deque;3.BFS循环当deque为空时跳出;新建列表tmp,用于临时存储当前层打印结果;当前层打印循环循环次数为当前层节点数(即deque长度);出队队首元素出队,记为node;打印若为奇数层,将node.val添加至tmp尾部;否则,添加至tmp头部;添加子节点若node的左(右)子节点不为空,则加入deque;......原创 2022-07-17 19:09:37 · 969 阅读 · 0 评论 -
【LeetCode】二叉树的右视图
LeetCode第199. 二叉树的右视图。题目描述:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。例子: 1 2 3 4 5 6 7 8非满二叉树, output [1, 3, 7, 8]解题一:深度优先搜索class Solution { public List<Integer> rightSideView(TreeNode ro...原创 2020-07-09 16:16:27 · 238 阅读 · 0 评论 -
【LeetCode】求一个环形数组中,子序列和的最大值
题目描述:给定一个环形数组,这个数组中有可能存在多个连续最长子序列,这里要求返回最长子序列的和的最大值。要求:时间复杂度O(n),空间复杂度O(n)例子:nums = [1, 2, 3, -1, -1, 4] ,那么返回最大和1 + 2 + 3 + 4 = 10.分析:第一步:环内部的最长子序列,通过动态规划的方法可以求得和的最大值。第二步:既然是一个环,那么环的开头和结尾,也可以组成连续最长子序列。思路:整个数组的和是一定的,我们要找最大子序列的和,那么是不是说,只要找到最小子序列原创 2020-07-08 23:14:00 · 1271 阅读 · 0 评论 -
【LeetCode】bash统计词频率——awk、sort
LeetCode地址:统计词频,bash题目描述:写一个 bash 脚本以统计一个文本文件words.txt中每个单词出现的频率。为了简单起见,你可以假设:words.txt只包括小写字母和' '。每个单词只由小写字母组成。单词间由一个或多个空格字符分隔。示例:假设 words.txt 内容如下:the day is sunny the thethe sunny is is你的脚本应当输出(以词频降序排列):the 4is 3sunny 2day ...原创 2020-07-01 22:45:24 · 470 阅读 · 0 评论 -
【LeetCode】寻找字符串中没有重复元素字符串的最大长度值
LeetCode第3题,无重复字符的最长子串。题目描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。解题:思路:滑动窗口利用HashSet,不能有重复的value值特性,当窗口右侧到达处存在重复值时,将左侧窗口向右移一格。class Solution { public int lengthOfLongestSubstring(String ..原创 2020-06-24 17:29:57 · 659 阅读 · 0 评论 -
【LeetCode】判断一个二叉树是否为二叉搜索树
LeetCode98. 验证二叉搜索树题目描述:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。输入: 4 / \ 1 6 / \ 5 7输出: false解释: 输入为: [5,1,6,null,null,5,7]。 根节点的值为 4 ,但是其右子树的左子节点值为5。没有小于根...原创 2020-06-15 23:30:26 · 2567 阅读 · 0 评论 -
【LeetCode】三数之和等于0(快排+双指针)
LeetCode第15题,6月12号的打卡题目三数之和。题目:给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例子:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]解题:暴力求解时间复杂度为O(N^3)。这里首先对数...原创 2020-06-12 12:37:17 · 407 阅读 · 0 评论 -
【LeetCode】杨辉三角(将时间复杂度优化到O(K))
LeetCode118. 杨辉三角题目描述:给定一个非负整数numRows,生成杨辉三角的前numRows行。例子:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]解题:分析:public static List<List<Integer>> generate(int numRows) { List<List<Integ...原创 2020-06-09 22:14:21 · 477 阅读 · 0 评论 -
【LeetCode】乘积最大子数组(动态规划)
LeetCode152. 乘积最大子数组。题目:给你一个整数数组nums,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。例子:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。分析:很容易想到,前n个元素的乘积和为temp,判断temp*nums[i]跟nums[i]的大小,留下最大的,再跟整个函数返回的res做比较。容易忽略的点:如果有负数呢?负负得正,但是只有一个负的时候,肯定要输给正数了,..原创 2020-06-09 22:02:36 · 496 阅读 · 0 评论 -
【LeetCode】岛屿数量(DFS深度优先搜索)--岛屿最大面积(DFS)
LeetCode第200题孤岛数量,题目地址。题目描述:给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。例子:输入:11110110101100000000输出: 1解题:DFS分析根据题意,陆地连接方式:上下左右,错对角不算连接。考虑将遍历过的孤岛元素(能连接上的岛屿)值设置为0,避免二次遍历。当然你也可以假.原创 2020-06-05 21:50:06 · 845 阅读 · 0 评论 -
【LeetCode】最大子数组和(动态规划、分治法)
LeetCode第53题地址。题目描述:给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。例子:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解题:动态规划解题:递归...原创 2020-06-03 23:02:08 · 1264 阅读 · 0 评论 -
【LeetCode】最长递增子序列(动态规划、二分查找)
LeetCode第300题题目地址。题目描述:给定一个无序的整数数组,找到其中最长上升子序列的长度。例子:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。解法一:动态规划动态规划的核心设计思想是数学归纳法。从第一个元素开始找,你思考的过程,将其归纳总结,转化为用代码描述你思考的过程。马士兵老师说过,代码不是一口气写出来的,一点点拆解,最后再组合,再去调试,处理边界,最终将问题解决。这里我们拆开原创 2020-06-03 22:54:14 · 1278 阅读 · 0 评论 -
【LeetCode】零钱兑换及其升级版(动态规划、回溯法)
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。原创 2020-06-02 16:40:10 · 2529 阅读 · 0 评论 -
【LeetCode】三指针(对只有三种元素的数组排序)--荷兰国旗问题
LeetCode75题目链接。颜色分类给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]分析 当你一眼想起来的办法,基本上不是最好的办法。比如,基本的冒泡排序,甚至可以通过遍历三种颜色种类数量再按照......原创 2020-05-23 16:53:33 · 652 阅读 · 0 评论 -
【LeetCode】手写题目
一面题目:1.题目描述:给一个有符号的数123,将其翻转变为321。LeetCode的第7题https://leetcode-cn.com/problems/reverse-integer/submissions/解答:主要考虑到边界情况。使用除法运算,时间复杂度O(n的位数), 空间复杂度O(1).class Solution { public int digitalTrans(int x) { int pop = 0;原创 2020-05-15 12:43:05 · 293 阅读 · 0 评论 -
【leetcode】5. 最长回文子串
题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"解答:分析:回文是一个正读和反读都相同的字符串,例如,“aba”是回文,而“abc”不是。中心扩展算法事实上,只需使...转载 2019-04-27 18:59:28 · 133 阅读 · 0 评论