![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
草莓啵啵浈
这个作者很懒,什么都没留下…
展开
-
把数组排成最小的数 使用自定义排序算法
把数组排成最小的数 使用自定义排序算法题目:输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: "102"示例 2:输入: [3,30,34,5,9]输出: "3033459"Class Solution{ public String minNum(int nums[]){ String[] str=new String[nums.length]; for(int i=原创 2021-04-25 16:44:59 · 122 阅读 · 0 评论 -
回溯法
回溯法1.树的遍历输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 target = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1class Solution { List<List<Int原创 2021-04-24 15:07:37 · 83 阅读 · 0 评论 -
前序遍历 中序遍历 后序遍历 递归与非递归算法实现
前序遍历 中序遍历 递归与非递归算法实现前序遍历递归算法public void preorder(TreeNode root){ if(root==null) return; System.out.println(root.val); preorder(root.left); preorder(roo.right);}前序遍历非递归算法 public void preorder(TreeNode root){ if(ro原创 2021-04-24 00:37:28 · 162 阅读 · 0 评论 -
[offer36二叉搜索数与双向链表]
[offer36二叉搜索数与双向链表]输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。//算法思路:设置两个全局变量节点,记录双链表的头部与尾部public class Solution{ public Node pre; public Node tail; public Node treeToDoublyList(Node root) { if(root==null) r原创 2021-04-20 13:15:25 · 54 阅读 · 0 评论 -
[剑指offer26]树的子结构
[剑指offer26]树的子结构输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例 2:输入:A = [3,4,5,1,2], B = [4,1]输出:truepublic boolean isSubStructure(TreeNode A, TreeNode B) { if(A==null|原创 2021-04-20 12:45:05 · 44 阅读 · 0 评论 -
[剑指offer07.重建二叉树]
[剑指offer07.重建二叉树]题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7算法思想:递归思想前序遍历:根左右中序遍历:左根右1.创建为根节点,根结点的值为子树范围内前序遍数组的首个下原创 2021-04-19 11:37:48 · 83 阅读 · 0 评论 -
[剑指offer04]二维数组的查找
[剑指offer04]二维数组的查找题目:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定原创 2021-04-19 10:26:46 · 48 阅读 · 0 评论 -
[剑指 Offer 46. 数字转为字符串
剑指Offer46 把数字翻译成字符串题目:给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi"和"mzi”算法思想:回溯法 首先先将数字转换成字符串,目地是能够遍历原创 2021-04-19 08:36:50 · 64 阅读 · 0 评论 -
[剑指 Offer 63. 股票的最大利润]
[剑指 Offer 63. 股票的最大利润]假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。 算法思想:当数组的长度小于等于1时,利润为0,直接返回。 否则用变量j遍历数组,同时用变量min记原创 2021-04-18 21:08:23 · 54 阅读 · 0 评论 -
[剑指offer62-easy]圆圈中剩下的数字
[剑指offer62-easy]圆圈中剩下的数字0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 public int lastRemaining(int n, int m) { List<Integer> list=原创 2021-04-18 01:13:33 · 49 阅读 · 0 评论 -
Leetcode 常见问题
Leetcode 常见问题文章目录Leetcode 常见问题1.大数求余:2.计算X位数求和1.大数求余:1、大数求余原因:大数越界大数越界:随着n增大,f(n)会超过Int32甚至Int64的取值范围,导致最终的返回值错误。2、求余运算规则:设正整数x,y,p,求余符号为%。对于加法运算:(x+y)%p = (x%p+y%p)%p对于乘法运算:(xy)%p = [(x%p)(y%p)]%p以防x,y本身就超出int32范围,可以创建一个long型变量tmp保存临时结果。1.例题面试原创 2021-04-17 12:20:38 · 227 阅读 · 0 评论 -
[剑指offer 剪绳子]
[剑指offer 剪绳子]给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1首先使用动态规划解决问题, 此处的path[i] 表示长度为i的绳子剪成原创 2021-04-17 11:01:29 · 84 阅读 · 0 评论