自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从尾到头打印链表

问题描述:解题思路:从尾到头打印链表,一种依赖栈的特性先进后出 ,另一种方式通过递归链表,在后续位置,将节点值加入新的数组,然后返回也可以做到。题解:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution {

2022-01-28 15:15:58 1102

原创 剑指 Offer 13. 机器人的运动范围

问题描述:解题思路:采用bfs从左上到右下搜索class Solution { public int movingCount(int m, int n, int k) { if(k == 0){ return 1; } Queue<int[]> queue = new LinkedList<int[]>(); int[]tx = new int[]{0,1};

2022-01-28 15:00:37 342

原创 leetCode 415. 字符串相加

class Solution { public String addStrings(String num1, String num2) { int i = num1.length()-1; int j = num2.length()-1; int add = 0; StringBuffer res = new StringBuffer(); while(i>=0||j>=0||add!=0){ .

2022-01-26 09:13:47 256

原创 leetCode 300. 最长递增子序列

问题描述:解题思路:采用动态规划解法,定义dp数组,dp[i]是nums[i]结尾的最长递增咨询列的长度。base case nums只有一个元素,最长递增子序列是自己。dp[0] = 1;求整个数组的最长子序列就是求dp数组最大值。找出状态转移方程。f(n)=maxf(i)+1其中i<n且a[i]<a[n]。解题答案:class Solution { public int lengthOfLIS(int[] nums) { int[]dp...

2022-01-18 19:19:34 159

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

问题描述:解题思路:采用前缀和数组方式求解,维护一个二维preSum数组,专门记录以原点为顶点的矩阵的元素之和。结果等于preSum[x2+1][y2+1]-preSum[x1][y2+1]-preSum[x2+1][y1]+preSum[x1][y1]。题解:class NumMatrix { private int[][]preSum; public NumMatrix(int[][] matrix) { int m = matr...

2022-01-04 20:48:24 124

原创 LeetCode 303. 区域和检索 - 数组不可变

问题描述:解题思路:采用前缀和数组。初始化时,新建一个前缀和数组,用来保存数组第位置的前缀和,查询时,直接用前缀数组和数组高位-前缀数组和数组低位,就可以得到区间数组和。题解:class NumArray { private int[]sum; public NumArray(int[] nums) { sum = new int[nums.length+1]; for(int i = 1;i<sum.length;i++){

2022-01-04 19:46:54 3239

原创 LeetCode 三数之和

问题描述:解题思路:排序加双指针。题解:class Solution { public List<List<Integer>> threeSum(int[] nums) { int n = nums.length; Arrays.sort(nums); List<List<Integer>> res = new ArrayList<List<Integer>>

2022-01-03 21:30:00 34

原创 LeetCode 11. 盛最多水的容器

问题描述:解题思路:和接雨水类问题类似,采用双指针,定义两个指针一个从左向右移动,一个从右向左移动。面积等于 Math.min(height[left],min[right])*(right-left)。实时计算面积,找到最多的结果,就是最多盛的水。题解:class Solution { public int maxArea(int[] height) { int left = 0; int right = height.length-1..

2022-01-03 18:49:27 296

原创 LeetCode 42. 接雨水

问题描述:解题思路:数组处能接的做多的雨水和它左右两边最高的柱子有关。应该为:Math.min(max_left,max_right)。题解1(暴力解法):int trap(int[] height) { int n = height.length; int res = 0; for (int i = 1; i < n - 1; i++) { int l_max = 0, r_max = 0; // 找右边最高的柱子

2022-01-02 18:24:57 3529

原创 LeetCode 200. 岛屿数量

问题描述:解题思路:遍历二位数组,找到‘1’的陆地,采用dfs广度优先遍历改点上下左右所有的点,将‘1’的陆地全部淹没成‘0’,该点向四周扩散,直到扩散到该点周围没有陆地了终止,记作一个岛屿。以此类推。题解:class Solution { public int numIslands(char[][] grid) { int m = grid.length; int n = grid[0].length; int res = 0;

2022-01-02 17:21:25 252

原创 LeetCode 146. LRU 缓存

问题描述:解题思路:采用哈希表+双向链表较为方便时间。双向链表便于维护数据最近使用再前,最久未使用在后。双向链表便于移动删除。题解:class LRUCache { class DLinkedNode{ int key; int value; DLinkedNode prev; DLinkedNode next; public DLinkedNode(){}; public D

2022-01-01 22:36:45 464

原创 LeetCode 102. 二叉树的层序遍历

问题描述:解题思路:二叉树层序遍历采用队列。实现:import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integ

2021-12-28 20:55:01 44

原创 LeetCode 125. 验证回文串

问题描述:解题思路:最简单办法采用双指针,p1从头走,p2从尾部走,验证p1和p2指向的字符是否相等。注意一点体感中只考虑字母和数字字符,忽略大小写,所以预先对字符串进行过滤。题解:class Solution { public boolean isPalindrome(String s) { StringBuffer sb = new StringBuffer(); for(int i = 0;i<s.length();i++){ char

2021-12-28 20:41:25 2520

原创 LeetCode 53. 最大子数组和

问题描述:解题思路:采用动态规划思路,定义已num[i]结尾的最大子数组的和为dp[i],转移方程为:dp[i] = Math.max(nums[i],nums[i]+dp[i-1]) 。然后遍历dp数组,找出最大值。该值为nums的最大子数组。题解:class Solution { public int maxSubArray(int[] nums) { int p = nums.length; int[]dp = new int[p]; .

2021-12-27 20:31:18 322

原创 LeetCode 88. 合并两个有序数组

问题描述:解题思路:输入的两个数组为有序的。新建一个数组int[m+n]。将nums1和nums2元素两两比较,放入int[m+n]中,再重新把int[m+n]放回nums1中。合并完毕。题解:class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int p1 = 0; int p2 = 0; int cur = 0; .

2021-12-27 20:22:51 373

原创 LeetCode 230. 二叉搜索树中第K小的元素

问题描述:解题思路:二叉搜索树性质 中序遍历结果是有序的。代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(.

2021-12-27 09:43:42 783

原创 LeetCode105. 从前序与中序遍历序列构造二叉树

问题描述解题思路:前序遍历root节点在数组最前面,所以前序遍历的数组第一个就是root节点,找到root节点,遍历中序遍历的数组,找到root节点在中序遍历数组的index。中序遍历找到root节点位置,root节点左右就是root节点的左/右子树。index-中序遍历的其实值就是左子树的个数(leftSize)。有leftSize数组中左子树边界,右子树边界,root节点index全都已知。可以递归构建二叉树了。代码实例:/** * Definition for a bin..

2021-12-26 19:02:09 344

原创 LeetCode 654 最大二叉树

问题描述:解题思路:遍历数组找出最大的数作为root节点。把数组以最大值为分界线,将数组分为两个子数组。以同样的思路递归左右两个子数组,构建出最大二叉树。题解:/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNod...

2021-12-26 17:26:52 127

原创 剑指 Offer 24. 反转链表

问题描述:解题思路:在遍历链表时,将当前节点的 next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。题解:/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/c

2021-12-26 12:02:14 49

原创 LeetCode 114. 二叉树展开为链表

问题描述:解题思路:1,先将左子树展开为单链表,再把右子树展开为单链表。2,把左子树作为右子树。3,把原来右子树接到现在右子树尾部,形成新的链表。题解:/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.v.

2021-12-26 11:39:19 53

原创 LeetCode 116 填充每个节点的下一个右侧节点指针

问题描述:解题思路:把每一层的节点穿起来即可 ,先把属于同一个父节点的左右两个节点穿起来(4->5,6->7)。在把不属于一个父节点的穿起来(5->6)。解题结果:/*// Definition for a Node.class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public No.

2021-12-26 11:14:39 165

原创 LeetCode 226 翻转

问题:解题思路:把一个二叉树的 每一个节点的左右子树交换就会得到一个翻转之后的二叉树。解题结果:/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val

2021-12-26 10:50:24 228

空空如也

空空如也

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

TA关注的人

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