每天一刷LeetCode
米兰的小铁匠z
成长随笔,记录学习的点滴。
展开
-
Leetcode:35-搜索插入位置
35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路这道题相对简单点,需要考虑的地方也很明确,画出思维导图:代码class Solution {原创 2020-07-11 20:58:02 · 212 阅读 · 0 评论 -
Leetcode:26-删除排序数组中的重复项
26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度原创 2020-07-11 00:19:09 · 197 阅读 · 0 评论 -
面试题:统计字符串中出现次数最多的字符
统计字符串中出现次数最多的字符,假设无重复的字符分析抓住HashMap的特点:如果遇到重复的key,则返回前前一个重复的key如果遇到不重复的,则返回null于是思路就很明确的!准备好两个Map,一个用于存字符串,key为字符串的每一个字符,value为1另一个Map用于出现重复字符时存储重复的次数,key为重复的字符,value为重复的次数但是此时又该如何获取到最大的value,对应的key呢?让人头疼!!可以先求出最大的value值。然后再获取map的entrySet,从中拿出valu原创 2020-07-10 21:02:55 · 1410 阅读 · 0 评论 -
Leetcode:28-实现 strStr()
28. 实现 strStr()实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle = “bba”输出: -1解题思路一直以来,做题有一个想法,自己认为可以做出来的方法一原创 2020-07-10 18:01:41 · 222 阅读 · 0 评论 -
Leetcode:27-移除元素
27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,1,2,2原创 2020-07-10 15:10:12 · 206 阅读 · 0 评论 -
Leetcode:21-合并两个有序链表
21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路自己原来的思路是这样的:两层while循环,外层遍历l1,内层遍历l2,将l1的各个元素插入到l2中,其中涉及到l1链表的拆开和l2链表的合并,写出一堆bug...去网上查这道题的思路,发现思路有两种比较好的方法:递归法:不好理解,看原创 2020-07-10 13:38:50 · 264 阅读 · 0 评论 -
Leetcode:20-有效的括号
20. 有效的括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)]”输出: false示例 5:输入: “{[]}”输出: true解题思路绕了原创 2020-07-09 21:58:28 · 180 阅读 · 0 评论 -
Leetcode:14-最长公共前缀
14.最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解题思路我的做法比较笨,也就是类似于BF算法那样,暴力匹配,如果遇到不匹配的直接记录下来位置,返回前缀长度。只不过该方法一定要注意几个坑:第一个原创 2020-07-09 17:39:13 · 198 阅读 · 0 评论 -
Leetcode:13-罗马数字转整数
13.罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V原创 2020-07-09 13:42:45 · 227 阅读 · 0 评论 -
LeetCode:9-回文数
9. 回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解题思路奇数个:偶数个:代码class Solution { public boolean i原创 2020-07-09 10:21:24 · 148 阅读 · 0 评论 -
LeetCode:面试题 16.11. 跳水板
16.11. 跳水板你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 <= k <= 100000解题思路我的方法比较粗暴,例如题目所给的实例题: sho原创 2020-07-09 09:15:19 · 241 阅读 · 0 评论 -
LeetCode:7-整数反转
7. 整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。解题思路123--->321右边依次取出每一位,做如下运算0*10+3 = 33*10+2=3232*10+1=原创 2020-07-08 23:07:29 · 311 阅读 · 0 评论 -
LeetCode:344-反转字符串
344. 反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,原创 2020-05-22 18:06:56 · 233 阅读 · 0 评论 -
LeetCode:344-反转字符串
反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入...原创 2019-10-06 00:16:07 · 85 阅读 · 0 评论 -
14. 最长公共前缀(C++)[简单]
题目描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。虽说属于简单类题目,我还是没有什么思路,感觉自己蠢到...原创 2019-03-29 11:58:35 · 1834 阅读 · 8 评论 -
13. 罗马数字转整数(C++)[简单]
题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的...原创 2019-03-28 20:26:38 · 721 阅读 · 0 评论 -
9. 回文数 (C++)[简单]
题目描述判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。cla...原创 2019-03-28 16:16:08 · 606 阅读 · 0 评论 -
2. 两数相加(C++)[中等]
题目描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...原创 2019-03-28 15:32:22 · 464 阅读 · 0 评论