![](https://img-blog.csdnimg.cn/4c3d31e469ca46c6aa9b1e369bfdc5ea.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构
文章平均质量分 62
详解leetcode-java题,掌握核心本质,并拓展延伸
翠生烟
誓要荡尽滔天浊浪
展开
-
leetcode--java--剑指 Offer 45. 把数组排成最小的数
题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”提示:0 < nums.length <= 100说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0官方题解在这里插入图片描述代码:本文列举 快速排序 和 内置函数 两种排原创 2021-05-17 11:55:17 · 160 阅读 · 0 评论 -
leetcode-java-二叉树的直径
题目描述官方题解class Solution { int ans; public int diameterOfBinaryTree(TreeNode root) { ans = 1; depth(root); return ans - 1; } public int depth(TreeNode node) { if (node == null) { return 0; // 访原创 2021-05-14 09:19:32 · 231 阅读 · 0 评论 -
leetcode-java-乐团站位
题目描述某乐团的演出场地可视作 num * num 的二维矩阵 grid(左上角坐标为 [0,0]),每个位置站有一位成员。乐团共有 9 种乐器,乐器编号为 1~9,每位成员持有 1 个乐器。为保证声乐混合效果,成员站位规则为:自 grid 左上角开始顺时针螺旋形向内循环以 1,2,…,9 循环重复排列。例如当 num = 5 时,站位如图所示请返回位于场地坐标 [Xpos,Ypos] 的成员所持乐器编号。我的解法class Solution { public int orchestra原创 2021-04-29 13:06:57 · 300 阅读 · 0 评论 -
leetcode-java-只出现一次的数字
题目描述给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。示例 1:输入:nums = [2,2,3,2]输出:3示例 2:输入:nums = [0,1,0,1,0,1,99]输出:99进阶:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?我的解法class Solution { public int singleNumber(int[] nums) { Map<原创 2021-04-30 09:45:35 · 137 阅读 · 0 评论 -
leetcode-java-LCP 33. 蓄水
题目描述给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。小扣有以下两种操作:升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]+1蓄水:将全部水桶接满水,倒入各自对应的水缸每个水缸对应最低蓄水量记作 vat[i],返回小扣至少需要多少次操作可以完成所有水缸蓄水要求。注意:实际蓄水量 达到或超过 最低蓄水量,即完成蓄水要求。示例 1:输入:bucket = [1,3], vat = [6,8]输出:4解释:原创 2021-05-06 20:31:03 · 252 阅读 · 0 评论 -
leetcode--java--爬楼梯
题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶官方题解方法一:动态规划我们用 f(x)f(x) 表示爬到第 xx 级台阶的方案数,考虑最后一步可原创 2021-05-13 09:58:36 · 288 阅读 · 0 评论 -
leetcode--java--有效的括号
题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true官方解法判断括号的有效性可以使用原创 2021-05-10 09:06:29 · 123 阅读 · 0 评论 -
leetcode-java-斐波那契数列
题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:1示例 2:输入:n = 5输出:5原创 2021-05-07 09:38:09 · 219 阅读 · 0 评论 -
Leetcode-java-回文数
题目描述给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。我的解法class Solution { public boolean isPalindrome(int x) { if(x==0) return true; if(x<0||x%10==0) return false; int temp=0原创 2021-04-29 09:27:44 · 89 阅读 · 0 评论 -
leetcode--java--移动零
题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。我的解法class Solution { public void moveZeroes(int[] nums) { int temp; //冒泡排序不改变数组元素相对顺序 for(int i=nums.原创 2021-05-18 09:51:36 · 156 阅读 · 0 评论 -
leetcode java题--整数反转
题目描述给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。我的提交代码 public int reverse(int x) { long temp = 0; int flag = x; //先把末尾的0去掉 while(flag/10!=0 && flag%10==0){原创 2021-04-27 13:59:44 · 132 阅读 · 0 评论 -
leetcode-java-回文链表
题目描述请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?//Definition for singly-linked list. public class ListNode { int val; ListNode next; ListNode() {} ListNode(int va原创 2021-05-08 10:52:41 · 95 阅读 · 0 评论