LeetCode
辣是真滴牛啤
这个作者很懒,什么都没留下…
展开
-
LeetCode 48. 旋转图像
题目描述:给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。要求:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。题目链接如果没有上面的要求,我们完全可以在开一个二维数组,将数字按照规则保存进去,但是题目要求只能使用传入的这个数组,这就使题目难度上升了些许。思路一:双重逆置先将数组以对角线进行逆置(arr[i][j] 与 arr[j][i] 交换),比如上面第一个例子,逆置之后如下:1 4 72 5 83 6 9接下原创 2020-07-15 10:09:43 · 114 阅读 · 0 评论 -
LeetCode 82 . 删除排序链表中的重复元素 II
题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。题目链接思路一:使用哑结点和快慢指针,快指针用于跳过重复的数组,慢指针用于和快指针拼接。class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) ...原创 2019-10-29 19:45:08 · 214 阅读 · 0 评论 -
LeetCode 61 . 旋转链表
题目描述:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。题目链接思路一:刚开始想到使用队列,将这个链表数据存储进去,进行k次出队入队操作,然后重新建立一个新的链表,并返回。(需要注意如果k的值大于链表长度,就会过多的重复队列操作,所以需要简化k)import java.util.ArrayDeque; class Solution { public...原创 2019-10-24 23:02:15 · 60 阅读 · 0 评论 -
LeetCode 24 . 两两交换链表中的节点
题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。题目链接节点两两交换,递归和非递归大体思路相似,都是第一个节点指向下一次两个交换节点的第一个节点,第二个节点指向第一个节点。大概如下图所示:虚线框里就又是一次递归调用,每次递归返回交换之后的第一个节点方法一:递归class Solution { ...原创 2019-10-22 22:55:38 · 85 阅读 · 0 评论 -
LeetCode 19 . 删除链表的倒数第n个节点
题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点题目链接为了解决一些极端情况:链表只有一个节点,会定义一个哑结点(需要明确的是,删除节点需要遍历到要删除节点的前一个节点)方法一:二次遍历思路:先遍历一次记录链表节点个数length,那么删除倒数第n个节点,就是删除第(length-n+1)个节点class Solution { public ListN...原创 2019-10-17 22:25:27 · 74 阅读 · 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 · 957 阅读 · 0 评论 -
LeetCode 21 . 合并两个有序链表
题目描述将两个有序的链表重新合并为一个新的有序链表题目链接思路:首先将两个链表中第一个结点值较小的作为合成新链表的首结点,即phead指向这个较小的结点,之后我们使用一个结点指针pc连接两个链表,将两个链表重新组合,其实这里的pc就相当于一个“针”,把两个链表连接起来,非常巧妙!!!代码如下/** * Definition for singly-linked list. * stru...原创 2019-02-08 14:30:11 · 113 阅读 · 0 评论 -
LeetCode 9 . 回文数(半数反转)
题目描述很简单就是判断一个整数是否是回文数题目链接那么我们很容易想到,将这个整数转化为单个的数字存储到数组中,类似于转化为字符串进行判断,但是这种方法会耗费多余的空间思路:我们可以将这个整数一半的数字进行反转,然后和这个整数前半部分进行比较,如果相同那么就是回文数(这里我们可以提前去除一些不可能的情况,比如x为负数,x的最后一位是0)例如:123321,它的后半部分321,反转之后就为1...原创 2019-02-07 11:06:47 · 156 阅读 · 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 · 1282 阅读 · 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 · 159 阅读 · 0 评论