![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
刷题
小菜鸟一枚。从今天开始要好好刷leetcode!
taroriceball
是个小菜鸟,只想找个地方记录一下自己的学习
展开
-
【刷leetcode】15.合并两个排序的链表
题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000思路遍历两个链表,比较它们正在指向的元素大小。谁小就添加到新链表中。如果一个链表遍历完了,而另一个链表还没有,就把剩余部分全部添加到新链表中。代码/** * Definition for singly-linked l原创 2020-12-21 16:11:20 · 75 阅读 · 0 评论 -
【刷leetcode】14.反转链表
题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000思路想要反转链表,就得把链表里所有元素的next进行修改。这里我们新设置两个相邻的双指针。firstnode初始指向null,nextnode初始指向头节点head。当nextnode不为空时,就可以原创 2020-12-21 15:39:25 · 67 阅读 · 0 评论 -
【刷leetcode】13.链表中倒数第k个节点
题目描述思路下标从0开始,设链表中的元素个数为n。倒数第1个节点的下标是n-1,倒数第2个节点的下标是n-2,… 倒数第k个节点的下标是n-k。设置两个指针,一个指针比另一个指针先移动k次。然后它们俩一起向后移动。先移动的指针指向null时,此时下标为n,那么后移动的指针此时的下标为n-k。后移动的指针此时正好指向了倒数第k个节点。(_)代码/** * Definition for singly-linked list. * public class ListNode { *原创 2020-12-21 14:37:18 · 57 阅读 · 0 评论 -
【刷leetcode】12.调整数组顺序使奇数位于偶数前面
题目描述思路可以设置两个指针,分别从数组的两端开始遍历。前指针专门找偶数,后指针专门找奇数。当前指针指向偶数,后指针指向奇数的时候,交换它们的位置。代码class Solution { public int[] exchange(int[] nums) { //1.设置两个指针,分别从数组的头尾开始遍历 //1.1前指针专门负责找偶数 int i = 0; //1.2后指针专门负责找奇数 int j = num原创 2020-12-21 10:49:07 · 122 阅读 · 0 评论 -
【刷leetcode】11.删除链表的节点
题目描述思路想要删除链表中的一个节点,需要分情况讨论。如果要删除头节点,最简单了,只用返回头节点的下一个指针就好。如果要删除链表中间的某个节点,需要把这个节点前一个节点的next指向这个节点后一个节点。需要两个指针才能完成。如果要删除最后一个节点,我们需要把这个节点前一个节点的next指向null。代码/** * Definition for singly-linked list. * public class ListNode { * int val; * List原创 2020-12-21 09:58:43 · 129 阅读 · 0 评论 -
【刷leetcode】11.机器人的运动范围
思路:矩阵路径问题的变种代码:参考了leetcode中的题解。class Solution { public int movingCount(int m, int n, int k) { //标记访问过的格子 boolean[][] visited = new boolean[m][n]; //从(0,0)开始移动 return dfs(0,0,m,n,k,visited); } //数位之和 publi原创 2020-12-19 22:53:34 · 82 阅读 · 1 评论 -
【刷leetcode】10.矩阵中的路径
题目请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第原创 2020-12-15 22:28:00 · 83 阅读 · 0 评论 -
【刷leetcode】9.旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0思路最最暴力法(不用动脑):给旋转数组从小到大排序,排在第一个的就是最小的。暴力法:旋转数组的最小值的前一位元素一定比它大!除非这个旋转数组的所有元素都是相同的。只要遍历旋转原创 2020-12-14 22:04:54 · 55 阅读 · 0 评论 -
【刷leetcode】8.青蛙跳台阶问题
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1: 输入:n = 2 输出:2示例 2: 输入:n = 7 输出:21示例 3: 输入:n = 0 输出:1提示: 0 <= n <= 100思路青蛙跳上第n级的跳法 = 跳上第n-1级的跳法 + 跳上第n-2级的跳法f(n) = f(n-1) + f(n-2)可.原创 2020-12-14 21:33:45 · 138 阅读 · 0 评论 -
【刷leetcode】7.斐波那契数列
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1: 输入:n = 2 输出:1示例 2: 输入:n = 5 输出:5 提示: 0 <.原创 2020-12-13 23:16:23 · 344 阅读 · 4 评论 -
【刷leetcode】6.用两个栈实现队列
题目描述: 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例 1: 输入: [“CQueue”,“appendTail”,“deleteHead”,“deleteHead”][[],[3],[],[]] 输出:[null,null,3,-1]示例 2: 输入:[“CQueue”,“deleteHead”,“appendTa.原创 2020-12-13 22:00:04 · 51 阅读 · 0 评论 -
【刷leetcode】5.根据前序和中序遍历重建二叉树
题目描述原创 2020-12-10 23:04:58 · 57 阅读 · 0 评论 -
【刷leetcode】4.从尾到头打印链表
题目描述:思路栈:先进后出把链表中的所有节点从头到尾进栈,出栈的顺序就是从尾到头啦!代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public int[] reversePrint(ListNo.原创 2020-12-09 21:55:17 · 63 阅读 · 0 评论 -
【刷leetcode】3.把字符串 s 中的每个空格替换成“%20“
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = “We are happy.”输出:“We%20are%20happy.”限制: 0 <= s 的长度 <= 10000class Solution { public String replaceSpace(String s) { //1.新建一个空的StringBuilder StringBuilder sb = new StringBuilder(); .原创 2020-12-08 22:55:53 · 276 阅读 · 0 评论 -
【刷leetcode】2.在有序的二维数组里查找一个整数
在一个 n * m的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一 暴力法和leetcode官方题解一样。直接遍历二维数组,查到目标值就为true,否则为false。class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix=.原创 2020-12-08 22:43:35 · 224 阅读 · 0 评论 -
【刷leetcode】1.找出数组中重复的数字
题目描述:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。...原创 2020-12-01 22:18:15 · 112 阅读 · 0 评论