![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
辣是真滴牛啤
这个作者很懒,什么都没留下…
展开
-
LeetCode 48. 旋转图像
题目描述:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。 要求:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 题目链接 如果没有上面的要求,我们完全可以在开一个二维数组,将数字按照规则保存进去,但是题目要求只能使用传入的这个数组,这就使题目难度上升了些许。 思路一:双重逆置 先将数组以对角线进行逆置(arr[i][j] 与 arr[j][i] 交换),比如上面第一个例子,逆置之后如下: 1 4 7 2 5 8 3 6 9 接下原创 2020-07-15 10:09:43 · 108 阅读 · 0 评论 -
LeetCode 82 . 删除排序链表中的重复元素 II
题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 题目链接 思路一:使用哑结点和快慢指针,快指针用于跳过重复的数组,慢指针用于和快指针拼接。 class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) ...原创 2019-10-29 19:45:08 · 199 阅读 · 0 评论 -
LeetCode 61 . 旋转链表
题目描述:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 题目链接 思路一:刚开始想到使用队列,将这个链表数据存储进去,进行k次出队入队操作,然后重新建立一个新的链表,并返回。(需要注意如果k的值大于链表长度,就会过多的重复队列操作,所以需要简化k) import java.util.ArrayDeque; class Solution { public...原创 2019-10-24 23:02:15 · 55 阅读 · 0 评论 -
LeetCode 24 . 两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 题目链接 节点两两交换,递归和非递归大体思路相似,都是第一个节点指向下一次两个交换节点的第一个节点,第二个节点指向第一个节点。 大概如下图所示: 虚线框里就又是一次递归调用,每次递归返回交换之后的第一个节点 方法一:递归 class Solution { ...原创 2019-10-22 22:55:38 · 77 阅读 · 0 评论 -
LeetCode 19 . 删除链表的倒数第n个节点
题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点 题目链接 为了解决一些极端情况:链表只有一个节点,会定义一个哑结点(需要明确的是,删除节点需要遍历到要删除节点的前一个节点) 方法一:二次遍历 思路:先遍历一次记录链表节点个数length,那么删除倒数第n个节点,就是删除第 (length-n+1)个节点 class Solution { public ListN...原创 2019-10-17 22:25:27 · 68 阅读 · 0 评论 -
LeetCode 38 . 报数(C语言)
题目描述 第一项存入一个字符‘1’,那么你就从第二项开始描述前一项的字符,例如:第一项‘1’,那么第二项就为‘11’表示‘1个1’,第三项为‘21’表示‘2个1’ 题目链接 解题思路:那么我们就可以统计相同数字出现的次数,比如前一项有这样一串字符‘1113334’,那么我们就可以统计 1 出现的次数为 3 ,3 出现的次数 3 ,4 出现的次数 1 ,所以下一项就为‘3 1 3 3 1 4’,大概...原创 2019-02-09 18:35:14 · 923 阅读 · 0 评论 -
LeetCode 21 . 合并两个有序链表
题目描述 将两个有序的链表重新合并为一个新的有序链表 题目链接 思路:首先将两个链表中第一个结点值较小的作为合成新链表的首结点,即phead指向这个较小的结点,之后我们使用一个结点指针pc连接两个链表,将两个链表重新组合,其实这里的pc就相当于一个“针”,把两个链表连接起来,非常巧妙!!! 代码如下 /** * Definition for singly-linked list. * stru...原创 2019-02-08 14:30:11 · 108 阅读 · 0 评论 -
LeetCode 9 . 回文数(半数反转)
题目描述 很简单就是判断一个整数是否是回文数 题目链接 那么我们很容易想到,将这个整数转化为单个的数字存储到数组中,类似于转化为字符串进行判断,但是这种方法会耗费多余的空间 思路:我们可以将这个整数一半的数字进行反转,然后和这个整数前半部分进行比较,如果相同那么就是回文数(这里我们可以提前去除一些不可能的情况,比如x为负数,x的最后一位是0) 例如:123321,它的后半部分321,反转之后就为1...原创 2019-02-07 11:06:47 · 138 阅读 · 0 评论 -
LeetCode 7 . 整数反转(判断整数溢出int范围)
题目描述 给出一个整数,将其反转,但是要注意反转之后的整数大小一定要符合int范围内,如果溢出就返回0 题目链接 思路:我们可以类似于栈的方式一样用数学方法来解决这个问题,但是在转化过程中要判断是否整数溢出的情况,这里用rev来接收每次得到整数的最后一位pop,即rev = rev*10 + pop,然后用rev的值去判断是否存在整数溢出 INT_MAX = 2^31-1 = 2147483647...原创 2019-02-07 10:42:17 · 1249 阅读 · 0 评论 -
LeetCode 100 . 相同的数
题目描述 比较两个树中的元素是否相同,相同返回true,否则返回false 题目链接 思路:使用递归不断查找树的左右孩子结点,如果每层结点数值都相等,那么就返回true 代码如下 /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; ...原创 2019-03-12 21:31:41 · 136 阅读 · 0 评论