![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Leetcode
Leetcode打卡学习
我是方小磊
这个作者很懒,什么都没留下…
展开
-
leetcode链表反转总结——全部翻转,部分反转
leetcode链表反转(递归)总结——全部翻转,部分反转参考:步步拆解:如何递归地反转链表的一部分由于链表反转使用迭代的思路进行实现比较简单,只是写法上比较复杂,所以这里仅整理记录一下递归反转链表的解法一.全部反转1.1 题目使用递归反转链表,并返回链表1.2 解法 /** * 递归反转链表 * @param head * @return */ public static ListNode reverseList(ListNode原创 2020-12-14 10:57:02 · 1914 阅读 · 0 评论 -
leetcode打卡18:题号13——罗马数字转整数
题目描述:题目思路:其实这道题和12题的整数转罗马数字比较类似,核心思想就是用hashmap去将对应的字符串和数字用key,value的形式存储起来然后每次用过hashmap的API接口去查找,但是一定要明白为什么是用hashmap,因为hashmap中查找的时间复杂度是0(1),用哈希表查找的!这才是关键实现: public int romanToInt(String s) { HashMap<String,Integer> map = new HashMap原创 2020-05-11 16:36:55 · 105 阅读 · 0 评论 -
leetcode打卡17:题号11: 盛最多水的容器
题目:题目理解:首先想到的当然是暴力解法了,无非就是双层for循环去实现多次计算最优解法其实是双指针解法:1. 定义两个指针为容器边界:初始化i = 0, j = a.length - 12. 首先计算本容器的体积,进行记录,3. 判断a【i】与a【j】的大小4. 如果a【i】 < a【j】 那么移动i指针 i++5. 如果a【i】> a【j】 那么移动j...原创 2020-04-20 19:45:51 · 121 阅读 · 0 评论 -
leetcode打卡16:题号9——回文数
题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。进阶:...原创 2020-04-18 15:12:13 · 107 阅读 · 0 评论 -
leetcode打卡15:题号8——字符串转换整数
题目:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在...原创 2020-04-17 11:08:48 · 177 阅读 · 0 评论 -
leetcode打卡14:题号7—— 整数反转
题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题目理解:这道题...原创 2020-04-15 10:16:35 · 178 阅读 · 0 评论 -
leetcode打卡13:题号6. Z 字形变换
题目题目理解这道题给人的最初印象就是,设置个二维数组,遍历字符串,对每个字符求下标 i,j,进行存储,之后一起输出。实际上这个方法是可以的,下面我也给出了这种方法的解法,但是是自己写的,代码冗余很高,所以了解即可。但是在看了官方的解法之后,我发现我对于这道题有一个认识误区,就是这道题最后是按行输出的,所以我们根本不需要去计算某一个字符的列坐标,我们只要知道它的行坐标,然后进行存储输出就可...原创 2020-04-13 17:09:13 · 159 阅读 · 0 评论 -
leetcode打卡12:题号5:最长回文子串
题目:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”解法一(暴力解法):暴力解法其实很简单,就是不停的去抽取子串,然后判断是否为回文串即可.但是这里我们的方法在提交的时候会显示超出时间限制,因为这个时间...原创 2020-04-09 11:46:34 · 273 阅读 · 0 评论 -
leetcode打卡11:题号4——寻找两个有序数组的中位数
题目:寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [...原创 2020-04-02 17:19:50 · 215 阅读 · 0 评论 -
leetcode打卡10:题号3——无重复字符的最长子串。
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wk...原创 2020-03-31 17:28:07 · 160 阅读 · 0 评论 -
leetcode打卡9:题号2——两数相加
题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2020-03-27 18:01:07 · 306 阅读 · 0 评论 -
Leetcode打卡8:题号1——两数之和
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]理解1.暴力解...原创 2020-03-24 21:04:45 · 196 阅读 · 0 评论 -
Leetcode打卡7:判断给定的链表中是否有环
题目:判断给定的链表中是否有环 扩展: 你能给出不利用额外空间的解法么?解析:其实思路很简单,就是定义一个快指针,一个慢指针,快指针每次走两步,慢指针每次走一步,如果快指针能够追上慢指针,那就意味着该链表有环java实现public boolean hasCycle(ListNode head) { if(head == null || head.next == null) r...原创 2020-03-24 15:42:32 · 206 阅读 · 0 评论 -
Leetcode打卡6:求给定的二叉树的(前中)后序遍历——非递归写法
题目:求给定的二叉树的后序遍历。例如:给定的二叉树为{1,#,2,3},1↵ ↵ 2↵ /↵ 3↵返回[3,2,1].备注;用递归来解这道题太没有新意了,可以给出迭代的解法么?本文提供了二叉树先序,中序,后序的迭代实现!下图为前序和中序的遍历压栈图:先序遍历:根左右1.无论是哪种遍历方式,用迭代实现都是用栈去做的,所以我们对栈的先入后出的顺序要很清楚。...原创 2020-03-23 16:52:36 · 348 阅读 · 0 评论 -
Leetcode打卡四:将给定的单链表L: L 0→L 1→…→L n-1→L n, 重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→… 要求使用原地算法,并且不改变节点的
题目:将给定的单链表L: L 0→L 1→…→L n-1→L n,重新排序为: L 0→L n →L 1→L n-1→L 2→L n-2→…要求使用原地算法,并且不改变节点的值例如:对于给定的单链表{1,2,3,4},将其重新排序为{1,4,2,3}./** * Definition for singly-linked list. * class ListNode { * ...原创 2020-03-12 12:30:41 · 1487 阅读 · 0 评论 -
Leetcode打卡三:使用插入排序对链表进行排序。
题目:使用插入排序对链表进行排序题目理解:1.使用插入排序对链表排序,首先我们要很明白大概的一个思路,肯定是用一个新的空链表一个个的向里面进行添加元素2.其次,对于新链表的使用,我这里提供两种不同的实现,一种是带头结点的,另一种是不带头结点的。这两种的区别其实还是挺大的,我第一次编写是使用了不带头结点的,然后看了不带头结点的写法,发现实在是太麻烦了。3.对于遍历,外层遍历肯定是不用说了,遍...原创 2020-03-09 18:56:30 · 156 阅读 · 0 评论 -
Leetcode打卡2:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
题目:对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上理解:1.首先明白这道题的解题思路应该是进行穷举2.其次是如何判断多个点都在一条直线上,那就是计算斜率,如果一个点和多个点计算的斜率都是相同的,那就意味着这几个点是在一条直线上的3.那么这道题的思路就已经出来了:通过两层的循环,针对每个点都与其他的点进行计算斜率,对计算结果相同的斜率进行计数,取出最大值。也就是说每...原创 2020-03-04 13:09:22 · 1055 阅读 · 1 评论 -
Leetcode打卡一:求给定二叉树的最小深度
首先要明白递归是实现该算法的最优方式,其实对于该算法有一个比较整体上的认识:要想得到最小深度,那么就可以先获取到左右子树的最小深度,然后加一,那么要想要想获取到左(右)子树的最小深度,那么就还要获取到该子树的左右子树的最小深度再加一,到这里我们就已经形成了一个递归的雏形。我们设计的这个递归方法,往大来看就是获取根节点左右子树的最小深度(往大来看的深层含义就是最外层递归的最后大的返回值!),往小来...原创 2020-03-02 19:38:36 · 314 阅读 · 0 评论