每天一刷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 · 295 阅读 · 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 · 270 阅读 · 0 评论 -
面试题:统计字符串中出现次数最多的字符
统计字符串中出现次数最多的字符,假设无重复的字符 分析 抓住HashMap的特点: 如果遇到重复的key,则返回前前一个重复的key 如果遇到不重复的,则返回null 于是思路就很明确的! 准备好两个Map,一个用于存字符串,key为字符串的每一个字符,value为1 另一个Map用于出现重复字符时存储重复的次数,key为重复的字符,value为重复的次数 但是此时又该如何获取到最大的value,对应的key呢?让人头疼!! 可以先求出最大的value值。然后再获取map的entrySet,从中拿出valu原创 2020-07-10 21:02:55 · 1502 阅读 · 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 · 292 阅读 · 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 · 259 阅读 · 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 · 343 阅读 · 0 评论 -
Leetcode:20-有效的括号
20. 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 解题思路 绕了原创 2020-07-09 21:58:28 · 249 阅读 · 0 评论 -
Leetcode:14-最长公共前缀
14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 解题思路 我的做法比较笨,也就是类似于BF算法那样,暴力匹配,如果遇到不匹配的直接记录下来位置,返回前缀长度。 只不过该方法一定要注意几个坑: 第一个原创 2020-07-09 17:39:13 · 258 阅读 · 0 评论 -
Leetcode:13-罗马数字转整数
13.罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V原创 2020-07-09 13:42:45 · 298 阅读 · 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 · 222 阅读 · 0 评论 -
LeetCode:面试题 16.11. 跳水板
16.11. 跳水板 你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。 返回的长度需要从小到大排列。 示例: 输入: shorter = 1 longer = 2 k = 3 输出: {3,4,5,6} 提示: 0 < shorter <= longer 0 <= k <= 100000 解题思路 我的方法比较粗暴,例如题目所给的实例题: sho原创 2020-07-09 09:15:19 · 320 阅读 · 0 评论 -
LeetCode:7-整数反转
7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 解题思路 123--->321 右边依次取出每一位,做如下运算 0*10+3 = 3 3*10+2=32 32*10+1=原创 2020-07-08 23:07:29 · 379 阅读 · 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 · 301 阅读 · 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 · 124 阅读 · 0 评论 -
14. 最长公共前缀(C++)[简单]
题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入: [“flower”,“flow”,“flight”] 输出: “fl” 示例 2: 输入: [“dog”,“racecar”,“car”] 输出: “” 解释: 输入不存在公共前缀。 说明: 所有输入只包含小写字母 a-z 。 虽说属于简单类题目,我还是没有什么思路,感觉自己蠢到...原创 2019-03-29 11:58:35 · 1945 阅读 · 8 评论 -
13. 罗马数字转整数(C++)[简单]
题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的...原创 2019-03-28 20:26:38 · 815 阅读 · 0 评论 -
9. 回文数 (C++)[简单]
题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 cla...原创 2019-03-28 16:16:08 · 675 阅读 · 0 评论 -
2. 两数相加(C++)[中等]
题目描述 给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -...原创 2019-03-28 15:32:22 · 562 阅读 · 0 评论
分享