![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣面试经典150题 (java)
文章平均质量分 61
莓莓不加糖
这个作者很懒,什么都没留下…
展开
-
【力扣经典面试题150道(java)】1. 两数之和
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。空间复杂度:O(1) (来自于定义的一些int变量)你可以想出一个时间复杂度小于 O(n。O(n) (主要来自于for循环)O(n)(主要来自于hash表)原创 2023-09-13 18:26:05 · 194 阅读 · 0 评论 -
【力扣经典面试题150道(java)】13. 罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。,即为两个并列的 1。原创 2023-09-11 22:41:49 · 63 阅读 · 0 评论 -
【力扣经典面试题150道(java)】14. 最长公共前缀
(1) 由于每一个英文字符串长度不一,但是最长公共前缀肯定不大于最短的字符串长度,因此,先通过for循环找到最短英文字符串的长度;(2) 每取一个字符,遍历每一个字符串,核对是否相同,如果不同,立刻停止,记录此时下标,返回公共字符串。str.substring(i,j)返回的是str.charAt(i)到str.charAt(j-1)。输入:strs = [“flower”,“flow”,“flight”]输入:strs = [“dog”,“racecar”,“car”]如果不存在公共前缀,返回空字符串。原创 2023-09-11 23:20:44 · 128 阅读 · 0 评论 -
【力扣经典面试题150道(java)】26. 删除有序数组中的重复项
且要求最终的数组保持原来的顺序。因此我们可以从头到尾遍历该数组,每当出现一个新元素就保留,且用for循环排除它之后的重复元素,直到数组的最后一个元素。这中情况,即最后一个数字是重复元素,因此我们需要加上判断(体现在代码的exist变量中):3之后的元素是否是重复元素。,返回删除后数组的新长度。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]不需要考虑数组中超出新长度后面的元素。不需要考虑数组中超出新长度后面的元素。解释:函数应该返回新的长度。原创 2023-09-10 19:08:49 · 112 阅读 · 0 评论 -
【力扣经典面试题150道(java)】27. 移除元素
解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3]原创 2023-09-10 17:43:06 · 152 阅读 · 0 评论 -
【力扣经典面试题150道(java)】28. 找出字符串中第一个匹配项的下标
输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。字符串中的)元素,比较之后的字母是否一致,一致则输出下标;字符串的第一个匹配项的下标(下标从 0 开始)。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。(3) 如果在(2)中没有输出,则输出。字符串,如果是,直接。原创 2023-09-12 11:15:34 · 216 阅读 · 0 评论 -
【力扣经典面试题150道(java)】58. 最后一个单词的长度
由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。要求最后一个单词的长度,那么从后向前遍历字符串找到最后一个单词统计长度即可。输入:s = “luffy is still joyboy”单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。解释:最后一个单词是长度为6的“joyboy”。解释:最后一个单词是“World”,长度为5。解释:最后一个单词是“moon”,长度为4。输入:s = “Hello World”字符串可能会以空格结尾。s 中至少存在一个单词。原创 2023-09-11 22:51:39 · 161 阅读 · 0 评论 -
【力扣经典面试题150道(java)】88. 合并两个有序数组
输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3。合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。输入:nums1 = [1], m = 1, nums2 = [ ], n = 0。输入:nums1 = [0], m = 0, nums2 = [1], n = 1。解释:需要合并 [1,2,3] 和 [2,5,6]。解释:需要合并的数组是 [ ] 和 [1]。输出:[1,2,2,3,5,6]原创 2023-09-10 12:35:43 · 153 阅读 · 0 评论 -
【力扣经典面试题150道(java)】121. 买卖股票的最佳时机
最值接的暴力法是利用两个for循环,计算出每一个prices[i]对应的最大利润,但是会超时。思路:采用的是每一次都假设当前的prices[i]是最小的,遍历prices[i+1]到最后一个元素,找到最大的元素值,然后作差,记录最大的差值最后输出。解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。,因此,我们可以遍历prices数组,记录下每一个日期之前的买入最低价,并且更新最大利润再输出即可。输入:[7,1,5,3,6,4]原创 2023-09-11 16:56:48 · 117 阅读 · 0 评论 -
【力扣经典面试题150道(java)】125. 验证回文串
时间复杂度:O(2*s.length+s’.length) (2是因为toLowerCase遍历了一遍字符串,s’.length指的是经过删除非字母数字之后的字符串长度)如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。先进行string字符串的删改(转换大写为小写,删除字母数字以外的元素),然后再遍历字符串比较是否对称。(1) 对于方法二,如果两个元素不同,需要判断是大小写不同,还是“真”的不同(解释:在移除非字母数字字符之后,s 是一个空字符串 “”。原创 2023-09-12 15:54:12 · 227 阅读 · 0 评论 -
【力扣经典面试题150道(java)】169. 多数元素
空间复杂度:O(logn) (arrays.sort的O(logn) + 定义变量的O(1))时间复杂度:O(nlogn) (arrays.sort的O(nlogn) + for循环的O(n))因为数组长度只有n,且要求元素出现的次数大于n/2,因此数组最中间的那个元素一定会是答案。首先按照升序进行排序,然后遍历升序数组,找到出现次数大于n/2次的元素并且输出。尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。输入:nums = [2,2,1,1,1,2,2]原创 2023-09-11 18:13:14 · 91 阅读 · 0 评论 -
【力扣经典面试题150道(java)】205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。因此,我们需要构造两个hash散列,长度均为128(因为字符是所有可见的ASCII字符),字符串中字符的ASCII码,值value(也就是hash[i])存放的是对应的。字符串中字符的ASCII码,值value可以用0或者1表示是否被占用。字符串中各个字符是否被对应,它的键值key(也就是下标)代表的是。字符串的映射关系,它的键值key(也就是下标)代表的是。原创 2023-09-12 22:06:29 · 128 阅读 · 0 评论 -
【力扣经典面试题150道(java)】290. 单词规律
指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”输入: pattern = “aaaa”, s = “dog cat cat dog”给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。中对应的单词都没有对应的。中对应的单词都有对应的。原创 2023-09-13 11:53:55 · 297 阅读 · 0 评论 -
【力扣经典面试题150道(java)】383. 赎金信
空间复杂度:O(1) (其实是O(26) + 单独的变量占用的常量空间) (略少于方法1)输入:ransomNote = “aa”, magazine = “aab”空间复杂度:O(1) (其实是O(26)*2 + 单独的变量占用的常量空间)输入:ransomNote = “aa”, magazine = “ab”时间复杂度:O(magazine.length()+26),取决于。时间复杂度:O(magazine.length()+26),取决于。原创 2023-09-12 11:52:44 · 169 阅读 · 0 评论 -
【力扣经典面试题150道(java)】392. 判断子序列
Sk 其中 k >= 10亿,你需要依次检查它们是否为 T 的子序列。时间复杂度:O(t.length()) (看似2个for循环,2个指针在前进,但是他们是同时发生的,且最多就移动了t.length()的距离)字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。最简单的就是在原来的基础上再加一层for循环,用于遍历每一个输入的Sn。的时候,“指针”挪到下一个元素。字符串的时候,所有s的元素都按顺序在。当中的元素,另一个指向字符串。原创 2023-09-13 22:33:09 · 238 阅读 · 0 评论