自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 LeetCode 150. 逆波兰表达式求值

LeetCode 150. 逆波兰表达式求值题目描述解题思路代码块题目描述根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"*"]输出:9解释:该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9示例 2:输入:

2021-03-21 13:48:00 83

原创 LeetCode 104. 二叉树的最大深度

LeetCode 104. 二叉树的最大深度题目描述解题思路代码块题目描述给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-

2021-03-05 21:57:51 94

原创 LeetCode 232. 用栈实现队列

LeetCode 232. 用栈实现队列题目描述解题思路代码块题目描述请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 pu

2021-03-05 10:56:07 104 1

原创 LeetCode 53. 最大子序和

LeetCode 53. 最大子序和题目描述解题思路代码块题目描述给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums =

2021-03-05 09:42:01 78 1

原创 LeetCode 21. 合并两个有序链表

LeetCode 21. 合并两个有序链表题目描述解题思路代码块题目描述合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示:两个链表的节点数目范围是 [0, 50]-100 <= Nod

2021-03-03 23:22:17 102 1

原创 LeetCode 206 反转链表

LeetCode 206 反转链表反转一个单链表。解题思路代码块反转一个单链表。反转链表反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?解题思路见代码块代码块/** * Definition for singly-linked list. * public class ListNode {

2021-03-03 22:49:23 82 1

原创 LeetCode 3 无重复字符的最长子串

LeetCode 3 无重复字符的最长子串题目描述解题思路代码块题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为

2021-03-03 21:54:03 74 1

原创 Leetcode 5. 最长回文子串

Leetcode 5. 最长回文子串题目描述解题思路代码块题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成来源:力扣(LeetCod

2021-03-03 21:02:10 81 1

原创 LeetCode 304. 二维区域和检索 - 矩阵不可变

LeetCode 304. 二维区域和检索 - 矩阵不可变题目描述解题思路代码块题目描述给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。上图子矩阵左上角 (row1, col1) = (2, 1) ,右下角(row2, col2) = (4, 3),该子矩形内元素的总和为 8。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[

2021-03-02 22:56:50 59

原创 各种排序算法总结

各种排序算法总结冒泡排序快速排序冒泡排序冒泡排序时间复杂度:O(n²)冒泡排序空间复杂度:O(1)public static void bubbleSort(int[] arr){ for(int i=0;i<arr.length-1;i++){ for(int j=arr.length-1;j>i;j--){ if(arr[j]<arr[j-1]){ int temp=

2021-02-16 21:50:48 60

原创 LeetCode480. 滑动窗口中位数

LeetCode480. 滑动窗口中位数题目描述解题思路代码块题目描述中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。例如:[2,3,4],中位数是 3[2,3],中位数是 (2 + 3) / 2 = 2.5给你一个数组 nums,有一个长度为 k 的窗口从最左端滑动到最右端。窗口中有 k 个数,每次窗口向右移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。示例:给出 nums = [1,

2021-02-04 23:16:54 84

原创 LeetCode1319 连通网络的操作次数

LeetCode1319 连通网络的操作次数题目描述解题思路代码块题目描述用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。给你这个计算机网络的初始布线 connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都

2021-01-23 16:12:20 134 1

原创 LeetCode989. 数组形式的整数加法

LeetCode989. 数组形式的整数加法题目描述解题思路代码块题目描述对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。示例 1:输入:A = [1,2,0,0], K = 34输出:[1,2,3,4]解释:1200 + 34 = 1234示例 2:输入:A = [2,7,4], K = 181输出:[4,5,5]解释:274

2021-01-22 22:17:20 60

原创 LeetCode830 较大分组的位置

LeetCode830 较大分组的位置题目描述解题思路代码题目描述在一个由小写字母构成的字符串 s 中,包含由一些连续的相同字符所构成的分组。例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 这样的一些分组。分组可以用区间 [start, end] 表示,其中 start 和 end 分别表示该分组的起始和终止位置的下标。上例中的 “xxxx” 分组用区间表示为 [3,6] 。我们称所有包含大于或等于三个连续字符的分组为 较大

2021-01-05 16:22:24 61

原创 LeetCode 86. 分隔链表

LeetCode 86. 分隔链表题目描述解题思路代码题目描述给你一个链表和一个特定值 x ,请你对链表进行分隔,使得所有小于 x 的节点都出现在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5题目链接: link.解题思路此处我们从链表头开始遍历,如果当前节点的值小于x我们就将x节点拿出来接到

2021-01-03 21:26:07 55

原创 LeetCode 239. 滑动窗口最大值

LeetCode 239. 滑动窗口最大值题目描述解题思路代码题目描述给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。示例 1:输入:nums = [1,3,-1,-3,5,3,6,7], k = 3输出:[3,3,5,5,6,7]解释:滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 3

2021-01-02 23:03:01 167

原创 剑指offer-数据流中的中位数

剑指offer-数据流中的中位数题目描述解题思路代码块题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。链接: link.解题思路我们可以将数据排序后分为两部分,左边部分的数据总是比右边的数据小。那么,我们就可以用最大堆和最小堆来装载这些数据:最大堆装左边的数

2020-10-11 16:05:29 88

原创 剑指offer-丑数

剑指offer-丑数题目描述解题思路代码块题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。题目链接: link.解题思路这儿给出动态规划的解题思路。链接: link.代码块1、采用动态规划的解题思路。public class Solution { public static int GetUglyNumber_Solution(int i

2020-10-11 14:02:04 56

原创 剑指offer-重建二叉树

剑指offer-重建二叉树题目描述解题思路代码块题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路见代码代码块/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode l

2020-10-10 19:42:02 64

原创 剑指offer-字符串的排列

剑指offer-字符串的排列题目描述解题思路代码块题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。题目链接: 链接.解题思路见代码代码块import java.util.ArrayList;import java.util.Collections;public cla

2020-10-09 21:42:55 58 1

原创 剑指offer-机器人的运动范围

剑指offer-机器人的运动范围题目描述解题思路代码块题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?解题思路解题思路见代码。代码块public class Solution { pub

2020-10-08 22:02:25 53

原创 剑指offer-滑动窗口的最大值

剑指offer-滑动窗口的最大值题目描述解题思路代码块题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2

2020-08-12 15:55:26 63

原创 剑指offer-二叉搜索树的第k个结点

剑指offer-二叉搜索树的第k个结点题目描述解题思路代码块题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。题目链接: link.解题思路见代码代码块/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val)

2020-08-08 16:49:38 63

原创 剑指offer-把二叉树打印成多行

剑指offer-把二叉树打印成多行题目描述解题思路代码块题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。解题思路是基于层次遍历的方式,通过设置来实现按层输出一行。设置ArrayList< Integer > list用来实现对二叉树每层的元素的保存;ArrayList< ArrayList< Integer >> list1用来实现对二叉树的多层进行一个保存。代码块import java.util.ArrayList;import

2020-08-08 11:33:27 104

原创 剑指offer-按之字形顺序打印二叉树

剑指offer-按之字形顺序打印二叉树题目描述解题思路代码块题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。解题思路主要判断是属于单数层还是偶数层,设置一个统计层数的count,单数层采用层次遍历从左边到右边,偶数层采用从右边到左边。代码块import java.util.ArrayList;import java.util.Stack;/*public class TreeNode {

2020-07-30 23:11:02 86

原创 剑指offer-对称的二叉树

剑指offer-对称的二叉树题目描述解题思路代码块题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。链接: link.解题思路采用的是递归的方式,1、判断对称的结点,当两个对称位置的结点都为空时返回true。2、当左边结点为空,右边结点不为空;当左边结点不为空,但是右边结点为空,我们返回false。3、左边结点值和右边对称位置结点值不相同,返回false。4、然后判断左边结点的left子节点和右边结点的right结点;左边

2020-07-30 20:25:07 71

原创 剑指offer-二叉树的下一个结点

剑指offer-二叉树的下一个结点题目描述解题思路代码块题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路(1) 若该节点存在右子树:则下一个节点为右子树最左子节点(如图节点 B )(2) 若该节点不存在右子树:这时分两种情况: 2.1 该节点为父节点的左子节点,则下一个节点为其父节点(如图节点 D ) 2.2 该节点为父节点的右子节点,则沿着父节点向上遍历,知道找到一个节点的父节点的左子节点

2020-06-30 11:17:16 83

原创 剑指offer-删除链表中重复的结点

剑指offer-删除链表中重复的结点题目描述解题思路代码块题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路见代码代码块/* public class ListNode { int val; ListNode next = null; ListNode(int val) {

2020-06-25 17:11:29 133

原创 剑指offer-链表中环的入口结点

剑指offer-链表中环的入口结点题目描述解题思路代码块题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。链接: link.解题思路我们要找到链表的环的入口,我们知道我们环的入口元素会被重复遍历,而且是重复遍历的第一元素,我们只要用Set装入遍历元素,当第一个出现重复的元素就是链表环的入口。代码块/* public class ListNode { int val; ListNode next = null; ListNode(int

2020-06-24 12:29:56 81

原创 剑指offer-字符流中第一个不重复的字符

剑指offer-字符流中第一个不重复的字符题目描述解题思路代码块题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。链接: link.解题思路见代码。代码块public class Solution { //Insert one char from stringstream char[] count=new char

2020-06-24 11:53:26 81

原创 剑指offer-表示数值的字符串

剑指offer-表示数值的字符串题目描述解题思路代码块题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。link.解题思路对于“+/-”: 正常来看它们第一次出现的话应该出现在字符串的第一个位置,如果它第一次出现在不是字符串首位,而且它的前面也不是“e/E”,那就不符合规则;如果是第二次出现,那么

2020-06-24 10:46:17 76

原创 剑指offer-构建乘积数组

剑指offer-构建乘积数组解题思路解题思路代码块解题思路给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)链接: link解题思路只需两层for循环,当i==j不做任何操作就行了。代码块import java.util.A

2020-06-15 10:47:35 79

原创 剑指offer-数组中重复的数字

剑指offer-数组中重复的数字题目描述代码块题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。代码块public class 剑指offer_数组中重复的数字 { // Parameters: // numbers: an array of intege

2020-06-15 10:07:16 108

原创 剑指offer-孩子们的游戏(圆圈中最后剩下的数)

剑指offer-孩子们的游戏-圆圈中最后剩下的数题目描述解题思路代码块题目描述题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿

2020-06-14 11:27:04 113

原创 剑指offer-扑克牌顺子

剑指offer-扑克牌顺子题目描述解题思路代码块题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且...

2020-05-02 22:04:10 108

原创 剑指offer-和为S的两个数字

剑指offer-和为S的两个数字题目描述解题思路代码块题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出解题思路声明一个list,将值和为S两个值加入list,如果新的两个值依然满足条件,但是乘积更小,我们就更新list。代码块import jav...

2020-04-12 18:30:38 78

原创 剑指offer-和为S的连续正数序列

剑指offer-和为S的连续正数序列题目描述解题思路代码块题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Goo...

2020-04-12 12:42:13 71

原创 剑指offer-数组中只出现一次数字

剑指offer-数组中只出现一次数字题目描述解题思路代码块题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路运用的是两层for循环实现,对每个元素进行遍历,求每个元素统计后面是否有相同的元素,没有相同的元素返回,这个元素,代码设置了标志量数组用于统计是否前面值相同的元素是否被访问,如被访问,直接跳过,防止输出数组中的有两个数字的值。...

2020-04-11 17:46:21 98

原创 剑指offer-平衡二叉树

剑指offer-平衡二叉树题目描述解题思路代码块题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。解题思路如何判断是一个平衡二叉树。1、对根结点,左子树的高度-右子树的高度差的绝对值不能超过1;2、对左子树的结点和右子树的结点都满足上述要求,叫做平衡二叉树。代码块public class Solution { public boolean IsBalanced_Solu...

2020-04-11 15:20:14 84

原创 剑指offer-二叉树的深度

剑指offer-二叉树的深度题目描述解题思路代码块题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路运用层次遍历非递归的方法,当进栈一个元素,就进num++。出栈一个元素就和max进行比较,如果max<num,就更新max=num。题目链接.代码块/**public class TreeNo...

2020-04-09 15:38:25 63

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除