【LeetCode 378. 有序矩阵中第K小的元素 Java】教程文章相关的互联网学习教程文章

Leetcode 121 MaxProfit121 买卖股票的最大收益 Java【代码】

121. 买卖股票的最佳时机 * 给定一个数组,它的第?i 个元素是一支给定股票第 i 天的价格。 * 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 * 注意你不能在买入股票前卖出股票public class MaxProfit121 {public static void main(String[] args) {int[] arr = {4, 1, 3, 6, 4, 7, 9};System.out.println(maxProfit(arr));}public static int maxProfit(int[] prices) {if(pri...

JAVA程序设计: 恢复二叉搜索树(LeetCode:99)

二叉搜索树中的两个节点被错误地交换。 请在不改变其结构的情况下,恢复这棵树。 示例 1: 输入: [1,3,null,null,2] 1 / 3 \ 2 输出: [3,1,null,null,2] 3 / 1 \ 2 示例 2: 输入: [3,1,4,null,null,2] 3 / \ 1 4 / 2 输出: [2,1,4,null,null,3] 2 / \ 1 4 / 3 思路:我们可以考虑到上一题中的方法三:验证二叉搜索树,采用中序遍历的方法。因为我们知道,一个合格的二叉搜索树在中序遍历...

Leetcode之转置矩阵(java实现)【代码】

题目:给定一个矩阵 A, 返回 A 的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 题解: 进行双重循环将A[i][j]与A[j][i]交换位置 关键方法: 获取矩阵的行数和列数 A.length//行数 A[0].length//列数 class Solution {public int[][] transpose(int[][] A) {int leni=A.length;int lenj=A[0].length;int [][] arix=new int[lenj][leni];for(int i=0;i<leni;i++)for(int j=0;j<lenj;j++){arix[j][i]...

LeetCode 58. 最后一个单词的长度 (java)【代码】

题目: https://leetcode-cn.com/problems/length-of-last-word/submissions/ 本题比较简单,只需从字符串的最后一个字符向前遍历即可,但是需要注意空格,不管末尾有多少个空格,从后向前遍历的时候从第一个非空格的字符开始计数,直到再次遇见空格,退出循环。 代码:class Solution {public int lengthOfLastWord(String s) {if(s.length()==0) return 0;int sum=0,f=0; //sum用来记录最后一个单词长度...

leetcode练习(前缀树数组实现)(java)【代码】

单词替换 在英语中,我们有一个叫做 词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。 现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。 你需要输出替换之后的句子。 示例 1: 输入: dict(词典) = ...

LeetCode 53. 最大子序和 (java)【代码】

动态规划类题目,定义了两个变量a和maxx,a用来记录每个数及之前的数相加的最大值,既dp[i],如果dp[i-1]>0,那么dp[i]+dp[i-1]一定大于dp[i],反之小于,所以只需要每次判断a是否大于0,更新a的值,并判断a与maxx大小,更新maxx。 class Solution {public int maxSubArray(int[] nums) {int maxx=nums[0];int a=nums[0];for(int i=1;i<nums.length;i++){if(a>=0)a=nums[i]+a;elsea=nums[i];if(a>maxx)maxx=a;}return maxx;}}

leetcode java 119. 杨辉三角 II【图】

leetcode java 119. 杨辉三角 II 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 3 输出: [1,3,3,1] 解题思路: 要哪行返回哪行,每次往前一行里添加,然后设置一下需要改变的值。 具体思路:创建一个ArrayList集合,用于存放结果

LeetCode 328——奇偶链表(JAVA)【代码】

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL 说明:应当保持奇数节点和偶数节点的...

leetcode 43 字符串相乘 java

题目 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 输入: num1 = “123”, num2 = “456” 输出: “56088” 思路 //类比于高精度乘法的做法,用一个整数数组res[],数组的每一位用来保存乘法结果的某一位,比如res[0]表示个位,res[1]表示十位//然后用第二个数的每一位乘以第一个数,结果存到res中,注意对准位置,最后如果有进位的话,要再往高位累加。 代码如下...

Java实现 LeetCode 131 分割回文串【代码】

class Go{List<List<String>> result = new ArrayList<>();List<String> list = new ArrayList<>();char[] arr;String s;void core(int index){if (index == arr.length){result.add(new ArrayList<>(list));return;}for (int i = index; i < arr.length; i++){if (ishw(index,i)){list.add(s.substring(index,i + 1));core(i + 1);list.remove(list.size() - 1);}}}boolean ishw(int left,int right){int L = left,R = right;whil...

Java实现 LeetCode 140 单词拆分II【代码】

class Solution {public List<String> wordBreak(String s, List<String> wordDict) {List<String> res = new ArrayList<>();int max = 0, min = Integer.MAX_VALUE;Set<String> set = new HashSet<>();for (String word : wordDict) {set.add(word);max = Integer.max(max, word.length());min = Integer.min(min, word.length());}boolean f[] = new boolean[s.length() + 1];f[0] = true;for (int i = 1; i < s.length() + 1; i...

Java实现LeetCode 139 单词拆分【代码】

public boolean wordBreak(String s, List<String> wordDict) {if(s.length() == 0){return false;}boolean right = false;StringBuilder str = new StringBuilder();StringBuilder temp = new StringBuilder();int j = 0;for(char i: s.toCharArray()){str.append(i);temp.append(i);String kl = str.toString() + s.substring(j+1, s.length());/*"aaaa"。"aaa""aaaaaaa";*/if(wordDict.contains(kl)){right = true;break;}/*"go...

Java实现 LeetCode 125 验证回文串【代码】

public static boolean isPalindrome(String s) {if(s==""||s==null) return true;char[] b = s.toCharArray();int l = 0;int r = b.length-1;while(l<r){if(((int)b[l]>64&&(int)b[l]<91)){b[l] += 32;}if(((int)b[r]>64&&(int)b[r]<91)){b[r] += 32;}if(((int)b[l]>47&&(int)b[l]<58) || ((int)b[l]>96&&(int)b[l]<123)){if(((int)b[r]>47&&(int)b[r]<58) || ((int)b[r]>96&&(int)b[r]<123)){if(b[l] != b[r]){return false;}l++...

JAVA程序设计: 旋转链表(LeetCode:61)

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。 示例 1: 输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL 向右旋转 2 步: 4->5->1->2->3->NULL 示例 2: 输入: 0->1->2->NULL, k = 4 输出: 2->0->1->NULL 解释: 向右旋转 1 步: 2->0->1->NULL 向右旋转 2 步: 1->2->0->NULL 向右旋转 3 步: 0->1->2->NULL 向右旋转 4 步: 2->0->1->NULL 思路:...

leetcode-java 最大数【代码】

最大数 题目描述: 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2] 输出: 210 示例 2:输入: [3,30,34,5,9] 输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。问题分析: 自定义一个排序方法,比较 a1+a2 与 a2+a1 的大小 将排序后字符数组拼接在一起,然后 return 如果字符数组的第一个值 为0,则根据排序方法晓得数组全部值为0,直接return 0 就好代码展示(已验证...

元素 - 相关标签