leetcode
C.&H.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode----给定一个二叉树,返回该二叉树由底层到顶层的层序遍历,(从左向右,从叶子节点到根节点,一层一层的遍历)
知识点:1.list.add(下标,值)。每次在下标0处插入元素时,自动将列表中的元素后移例如,依次向列表中的0位置插入12 13 14import java.util.ArrayList;public class TestOne { public static void main(String[] args) { // TODO Auto-generated method stub ArrayList<Integer> list = new ArrayList原创 2020-10-01 11:27:29 · 1942 阅读 · 0 评论 -
leetcode-----给出一棵树的前序遍历和中序遍历,请构造这颗二叉树
import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param preorder int整型一维数组 * @param inorder int整型一维数组 * @retu...原创 2020-09-24 13:06:07 · 854 阅读 · 0 评论 -
leetcode------给定一个二叉树和一个值sum,判断是否有从根节点到叶子节点的节点值之和等于sum 的路径,
import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @param sum int整型 * @return bool布尔型...原创 2020-09-24 12:08:53 · 2250 阅读 · 0 评论 -
leetcode----给定一个二叉树和一个值 sum,请找出所有的根节点到叶子节点的节点值之和等于sum 的路径,
import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @param sum int整型 * @return int整型Ar...原创 2020-09-24 11:52:23 · 1700 阅读 · 0 评论 -
leetcode----给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。 这个路径的开始节点和结束节点可以是二叉树中的任意节点
import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @return int整型 思路:对于最大路径和:节点可能是负的,因此开始...原创 2020-09-24 07:38:59 · 851 阅读 · 0 评论 -
leetcode-----判断回文串。判断题目给出的字符串是不是回文,仅考虑字符串中的字母字符和数字字符,并且忽略大小写
import java.util.*;public class Solution { /** * * @param s string字符串 * @return bool布尔型 */ public boolean isPalindrome (String s) { // 字符串为空 if(s==null){ return true; } s = s.t...原创 2020-09-24 07:03:11 · 807 阅读 · 0 评论 -
leetcode------现在有一个这样的链表:链表的每一个节点都附加了一个随机指针,随机指针可能指向链表中的任意一个节点或者指向空。
/** * Definition for singly-linked list with a random pointer. * class RandomListNode { * int label; * RandomListNode next, random; * RandomListNode(int x) { this.label = x; } * }; *//* 思路: 1.复制原链表,将复制的每个结点放在原结点之后。 例如:原...原创 2020-09-23 19:02:08 · 363 阅读 · 0 评论 -
leetcode----找出数组中出现一次的数字
import java.util.*;public class Solution { /** * * @param A int整型一维数组 * @return int整型 */ public int singleNumber (int[] A) { // write code here int sum=A[0]; for(int i=1;i<A.length;...原创 2020-09-23 09:30:43 · 240 阅读 · 0 评论 -
leetcode----判断给定的链表中是否有环
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public boolean hasCycle(ListNode head)...原创 2020-09-23 09:12:50 · 193 阅读 · 0 评论 -
leetcode---对于一个给定的链表,返回环的入口节点,如果没有环,返回null
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode detectCycle(ListNo...原创 2020-09-23 09:08:04 · 897 阅读 · 0 评论 -
leetcode-----二叉树的前序遍历(递归和非递归)
(1)方法一:递归import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList */..原创 2020-09-23 08:18:20 · 177 阅读 · 0 评论 -
leetcode----二叉树的后序遍历(递归和非递归)
(1)方法一:递归import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList */..原创 2020-09-23 08:05:26 · 240 阅读 · 0 评论 -
leetcode---重排链表
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { /* 思路:1.使用快慢指针,将链表分成前后两个部分 L0 L1 L...原创 2020-09-22 20:59:00 · 190 阅读 · 0 评论 -
leetcode---使用插入排序对链表进行排序。
import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * * @param head ListNode类 * @return ListNode类 思路:每次向已经排序的部分链表中插入节点时,先确定插入位置,需找到其插入位置的前驱节点 ...原创 2020-09-22 20:06:28 · 318 阅读 · 0 评论 -
leetcode----在O(n log n)的时间内使用常数级空间复杂度对链表进行排序。
import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solution { /** * * @param head ListNode类 * @return ListNode类 不带头节点 思路:采用归并排序的方法。其时间复杂度为O(nlog2n) ...原创 2020-09-22 19:47:00 · 341 阅读 · 0 评论 -
leetcode----对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
import java.util.*;/* * public class Point { * int x; * int y; * } */public class Solution { /** * * @param points Point类一维数组 * @return int整型 * 计算 二维平面上,最多有多少个点位于同一直线上 思路:MAX记录位于同一直线上最多的点数 遍历所有的点 ...原创 2020-09-22 11:12:43 · 1152 阅读 · 0 评论 -
leetcode------计算逆波兰式(后缀表达式)的值
public int evalRPN (String[] tokens) { //通过栈来解决 if(tokens.length==0){ //后缀序列为空 return 0; } //1.定义栈 Stack<Integer> s = new Stack<Integer>(); int n1,n2,n; for(int i=...原创 2020-09-21 18:52:17 · 136 阅读 · 0 评论 -
leetcode------求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。
public int run (TreeNode root) { // write code here if(root==null){ return 0; }else if(root.left==null && root.right==null){ return 1; }else if(root.left!=null && root.right!=null){...原创 2020-09-21 16:46:56 · 267 阅读 · 0 评论 -
leetcode-----给定一个值n,请生成所有的存储值1...n.的二叉搜索树(BST)的结。.例如: 给定n=3,你的程序应该给出下面五种不同的二叉搜索树(BST)
题目描述给定一个值n,请生成所有的存储值1...n.的二叉搜索树(BST)的结构例如:给定n=3,你的程序应该给出下面五种不同的二叉搜索树(BST) 1 3 3 2 1↵ / / / ↵ 3 2 1 1 3 2↵ / / ↵ 2 1 2原创 2020-07-14 12:04:19 · 403 阅读 · 0 评论 -
leetcode----给定一棵任意二叉树,填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。
题目描述继续思考"Populating Next Right Pointers in Each Node".这道题给定一个二叉树 struct TreeLinkNode {↵ TreeLinkNode *left;↵ TreeLinkNode *right;↵ TreeLinkNode *next;↵ }填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。初始时,所有的next指针都为NULL。原创 2020-07-14 11:59:50 · 867 阅读 · 0 评论 -
leetcode----假设你有一个数组,其中第i个元素表示某只股票在第i天的价格。 设计一个算法来寻找最大的利润。你可以完成任意数量的交易.
题目描述假设你有一个数组,其中第i个元素表示某只股票在第i天的价格。设计一个算法来寻找最大的利润。你可以完成任意数量的交易(例如,多次购买和出售股票的一股)。但是,你不能同时进行多个交易(即,你必须在再次购买之前卖出之前买的股票)。public int maxProfit (int[] prices) { // write code here if(prices.length==0) return 0; int maxpro = 0;原创 2020-07-14 10:37:18 · 2818 阅读 · 0 评论 -
leetcode----假设你有一个数组,其中第i个元素是某只股票在第i天的价格。
题目描述假设你有一个数组,其中第i个元素是某只股票在第i天的价格。如果你最多只能完成一笔交易(即买一股和卖一股股票),设计一个算法来求最大利润。 public int maxProfit (int[] prices) { // 最便宜的时候买,最贵的时候卖,并且买在前,卖在后 if(prices.length==0) return 0; int min=prices[0],maxP=0; for(int i=1;i<pr原创 2020-07-14 10:21:20 · 4322 阅读 · 0 评论 -
leetcode---给定一个完美二叉树,填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。 初始时,所有的next指针都为NULL
题目描述给定一个二叉树 struct TreeLinkNode {↵ TreeLinkNode *left;↵ TreeLinkNode *right;↵ TreeLinkNode *next;↵ }填充所有节点的next指针,指向它右兄弟节点。如果没有右兄弟节点,则应该将next指针设置为NULL。初始时,所有的next指针都为NULL注意:你只能使用常量级的额外内存空间 可以假设给出的二叉树是一个完美的二叉树(即,所有叶子节点都位于同原创 2020-07-14 08:31:01 · 708 阅读 · 0 评论 -
leetcoe-----判断给定的二叉树是否是平衡的
题目描述判断给定的二叉树是否是平衡的在这个问题中,定义平衡二叉树为每个节点的左右两个子树高度差的绝对值不超过1的二叉树public boolean isBalanced (TreeNode root) { // write code here if(root==null){ return true; } if(root.left==null && root.right==null){原创 2020-07-14 06:08:14 · 174 阅读 · 0 评论 -
leetcode------求给定二叉树的最大深度
题目描述求给定二叉树的最大深度,最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。int ldep = 0,rdep = 0; public int maxDepth (TreeNode root) { if(root==null){ return 0; }else if(root.left==null && root.right==null){ return 1;原创 2020-07-13 11:39:49 · 471 阅读 · 0 评论 -
leetcode-----给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)
题目描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},如果你不清楚“{1,#,2,3}"的含义的话,请继续阅读我们用如下方法将二叉树序列化:二叉树的序列化遵循层序遍历的原则,”#“代表该位置是一条路径的终结,下面不再存在结点。例如:上述的二叉树序列化的结果是:"{1,2,3,#,#,4,#,#,5}".public ArrayList<ArrayList<Intege原创 2020-07-13 11:29:37 · 2216 阅读 · 0 评论 -
leetcode-----给定一个值n,能构建出多少不同的值包含1...n的二叉搜索树(BST)?
题目描述给定一个值n,能构建出多少不同的值包含1...n的二叉搜索树(BST)?例如给定 n= 3, 有五种不同的二叉搜索树(BST)//二叉搜索树(二叉排序树): // 1)左子树上的所有节点的值均小于根节点的值 ;2)右子树上所有节点的值均大于根节点的值。 public int numTrees (int n) { if(n==0){ return 1; } int[] f = new int[n+.原创 2020-07-13 11:05:20 · 1256 阅读 · 0 评论 -
leetcode------给出一棵二叉树,返回这棵树的中序遍历
题目描述给出一棵二叉树,返回这棵树的中序遍历例如:给出的二叉树为{1,#,2,3},返回[1,3,2].备注:递归的解法太没有新意了,你能用迭代的方法来解这道题吗?如果你不清楚“{1,#,2,3}"的含义的话,请继续阅读我们用如下方法将二叉树序列化:二叉树的序列化遵循层序遍历的原则,”#“代表该位置是一条路径的终结,下面不再存在结点。例如:上述的二叉树序列化的结果是:"{1,2,3,#,#,4,#,#,5}".方法一:递归遍历 ArrayL.原创 2020-07-13 08:53:42 · 758 阅读 · 0 评论 -
leetcode-----给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。
题目描述给出两个二叉树,请写出一个判断两个二叉树是否相等的函数。判断两个二叉树相等的条件是:两个二叉树的结构相同,并且相同的节点上具有相同的值public boolean isSameTree (TreeNode p, TreeNode q) { //使用递归 if(p==null && q==null) return true; if(p==null || q==null) r原创 2020-07-13 07:32:06 · 579 阅读 · 0 评论 -
leetcode------删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
题目描述删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表为1->1->2,返回1->2.给出的链表为1->1->2->3->3,返回1->2->3.public ListNode deleteDuplicates (ListNode head) { if(head==null || head.next==null){ return head原创 2020-07-12 11:47:09 · 1245 阅读 · 0 评论 -
leetcode-----现在有一个包含n个物体的数组,其中物体颜色为颜色为红色、白色或蓝色,请对这个数组进行排序,让相同颜色的物体相邻,颜色的顺序为红色,白色,蓝色。
题目描述现在有一个包含n个物体的数组,其中物体颜色为颜色为红色、白色或蓝色,请对这个数组进行排序,让相同颜色的物体相邻,颜色的顺序为红色,白色,蓝色。我们用0,1,2分别代表颜色红,白,蓝注意:本题要求你不能使用排序库函数扩展:一个非常直接的解法是两步的计数排序的算法首先:遍历一遍数组,记录0,1,2的数量,然后重写这个数组,先将0写入,再将1写入,再将2写入你能给出一个只用一步,并且能在常数级空间复杂度解决这个问题的算法吗? public void sortColor原创 2020-07-12 11:18:03 · 692 阅读 · 0 评论 -
leetcode-----给定一个m*n的矩阵,如果有一个元素是0,就把该元素所在的行和列上的元素全置为0,要求使用原地算法。
题目描述给定一个m*n的矩阵,如果有一个元素是0,就把该元素所在的行和列上的元素全置为0,要求使用原地算法。拓展:你的算法有使用额外的空间吗?一种比较直接的算法是利用O(m,n)的空间,但是这不是一个好的解法使用简单的改进可以在O(m+n)的空间解决这个问题,但是还不是最佳的解法你能在常量级的空间复杂度内解决这个问题吗?思路:牺牲第一行第一列的空间,来记录对应行列中是否有0.(空间复杂度:O(1),时间复杂度:O(m*n)) 以下面2行3列的...原创 2020-07-12 10:17:08 · 2279 阅读 · 0 评论 -
leetcode-----你在爬楼梯,需要n步才能爬到楼梯顶部 每次你只能向上爬1步或者2步。有多少种方法可以爬到楼梯顶部?
题目描述你在爬楼梯,需要n步才能爬到楼梯顶部每次你只能向上爬1步或者2步。有多少种方法可以爬到楼梯顶部? public int climbStairs (int n) { if(n==1 || n==0){ return 1; } int[] step = new int[n+1]; step[1]=1; step[2]=2; //第i步的方法 = 第i-1步的方法+第i-2原创 2020-07-12 09:12:21 · 2274 阅读 · 1 评论 -
leetcode-----将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。
题目描述将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的。public ListNode mergeTwoLists (ListNode l1, ListNode l2) { //3种特殊情况 if(l1==null && l2!=null){ return l2; } if(l2==null && l1!=null){原创 2020-07-12 08:49:49 · 1582 阅读 · 0 评论 -
leetcode-----一个机器人在m×n大小的地图的左上角。 机器人每次向下或向右移动。机器人要到达地图的右下角。可以有多少种不同的路径从起点走到终点?
题目描述一个机器人在m×n大小的地图的左上角(起点,下图中的标记“start"的位置)。机器人每次向下或向右移动。机器人要到达地图的右下角。(终点,下图中的标记“Finish"的位置)。可以有多少种不同的路径从起点走到终点?上图是3×7大小的地图,有多少不同的路径?备注:m和n小于等于100public int uniquePaths (int m, int n) { int[][] dp = new int[m][n]; .原创 2020-07-11 13:52:34 · 2161 阅读 · 1 评论 -
leetcode------给定一个整数n,将数字1到n^2n 2 按螺旋的顺序填入n×n的矩阵
题目描述给定一个整数n,将数字1到n^2n2按螺旋的顺序填入n×n的矩阵例如:给出的n=3,你应该返回如下矩阵:public int[][] generateMatrix (int n) { int[][] result = new int[n][n]; if(n<1){ return result; } int count=1;//依次累加,存放到矩阵中 int ro原创 2020-07-11 12:01:36 · 825 阅读 · 0 评论 -
leetcode-----请计算给出的数组(至少含有一个数字)中具有最大和的子数组(子数组要求在原数组中连续)
题目描述请计算给出的数组(至少含有一个数字)中具有最大和的子数组(子数组要求在原数组中连续)例如:给出的数组为[−2,1,−3,4,−1,2,1,−5,4],子数组[−2,1,−3,4,−1,2,1,−5,4],具有最大的和:6.拓展:如果你已经提出了O(n)的解决方法,请尝试使用分治算法来解决这道题。这道题分治的解法更巧妙一些。public int maxSubArray (int[] A) { //依次计算以每个位置结尾的子数组的累加和,最后保留最大的累加和原创 2020-07-11 11:15:40 · 367 阅读 · 0 评论 -
leetcode-----给出一个用二维矩阵表示的图像 返回该图像顺时针旋转90度的结果
题目描述给出一个用二维矩阵表示的图像返回该图像顺时针旋转90度的结果扩展:你能使用原地算法解决这个问题么? public void rotate(int[][] matrix) { //分两步进行处理(总共旋转了90°) /*1)沿y=x对角线进行翻转(即4和1交换) 1 2 翻转为 1 3 3 4 2 4 **2)沿x轴进行翻转(即1 3和2 4交换) .原创 2020-07-11 08:11:30 · 450 阅读 · 0 评论 -
leetcode-----将给出的链表中的节点每k个一组翻转,返回翻转后的链表
题目描述将给出的链表中的节点每k个一组翻转,返回翻转后的链表如果链表中的节点数不是k的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。只允许使用常数级的空间例如:给定的链表是1->2->3->4->5对于 k= 2, 你应该返回 2->1->4->3->5对于k= 3, y你应该返回3->2->1->4->5public ListNode reverseKGrou...原创 2020-07-11 07:29:39 · 2515 阅读 · 0 评论 -
leetcode------将给定的链表中每两个相邻的节点交换一次,返回链表的头指针
题目描述将给定的链表中每两个相邻的节点交换一次,返回链表的头指针例如,给出1->2->3->4,你应该返回链表2->1->4->3。你给出的算法只能使用常量级的空间。你不能修改列表中的值,只能修改节点本身。public ListNode swapPairs (ListNode head) { if(head==null || head.next==null){//不含节点 或 只含有一个节点 return head原创 2020-07-10 11:58:41 · 1010 阅读 · 0 评论
分享