![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode-Java
Hello World程序员
这个作者很懒,什么都没留下…
展开
-
单调栈84. 柱状图中最大的矩形85. 最大矩形
单调栈84. 柱状图中最大的矩形class Solution { // 目标:找两边第一个小于它的值 //使用单调递增栈 public int largestRectangleArea(int[] heights) { // 这里为了代码简便,在柱体数组的头和尾加了两个高度为 0 的柱体。 int[] tmp = new int[heights.length + 2]; System.arraycopy(heights, 0,.原创 2020-09-14 16:15:11 · 1085 阅读 · 0 评论 -
二分查找模板
class Solution { public int searchInsert(int[] nums, int target) { int left = 0, right = nums.length - 1; // 注意 while(left <= right) { // 注意 int mid = (left + right) / 2; // 注意 if(nums[mid] == target) { // 注意.原创 2020-08-30 10:28:17 · 567 阅读 · 0 评论 -
325. 和等于 k 的最长子数组长度--hashmap前缀和
class Solution { public int maxSubArrayLen(int[] nums, int k) { int len = nums.length; int max = 0; // 求前缀和,并利用 Map<前缀和, 对应索引> 储存 int[] sum = new int[len + 1]; Map<Integer, Integer> map = new Has...原创 2020-08-17 12:55:46 · 513 阅读 · 0 评论 -
对map进行排序-按字符出现次数 排序
package nowcode.test;import java.util.*;public class Testl { //按字符出现次数 排序 public static void main(String[] args) { System.out.println(frequencySort("taeeaaa")); } public static String frequencySort (String s) { // wri.原创 2020-08-16 17:37:35 · 508 阅读 · 0 评论 -
159. 至多包含两个不同字符的最长子串-滑动窗口+hashmap
class Solution { public int lengthOfLongestSubstringTwoDistinct(String s) { int n = s.length(); if (n < 3) return n; int left = 0; int right = 0; //字符 当前最右位置 HashMap<Character, Integer> hashmap = new HashMap<Ch...原创 2020-08-12 21:15:12 · 433 阅读 · 0 评论 -
前中后构造二叉树
106. 从中序与后序遍历序列构造二叉树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { int post_idx; int[] postorder; int.原创 2020-08-10 10:50:58 · 634 阅读 · 0 评论 -
剑指 Offer 54. 二叉搜索树的第k大节点 俩种解法
剑指 Offer 54. 二叉搜索树的第k大节点//给定一棵二叉搜索树,请找出其中第k大的节点。 //// //// 示例 1: //// 输入: root = [3,1,4,null,2], k = 1// 3// / \// 1 4// \// 2//输出: 4 //// 示例 2: //// 输入: root = [5,3,6,2,4,null,null,1], k = 3// 5// / \// 3 6..原创 2020-08-07 09:00:42 · 405 阅读 · 0 评论 -
打家劫舍三部曲DP
198. 打家劫舍class Solution { //房屋不可以相邻 dp[i]=Math.max(dp[i-1],dp[i-2]+nums[i-1]); //前一个或者 前俩个状态转移过来 nums[i-1] public int rob(int[] nums) { if(nums==null||nums.length==0) return 0; int len=nums.length; int[] dp=new...原创 2020-08-05 08:14:55 · 1530 阅读 · 0 评论 -
222. 完全二叉树的节点个数
222. 完全二叉树的节点个数/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int countNodes(TreeNode root) { .原创 2020-08-04 17:45:03 · 854 阅读 · 0 评论 -
562. 矩阵中最长的连续1线段
class Solution { public boolean overflow(int[][] M, int i, int j) { return i < 0 || j < 0 || i >= M.length || j >= M[0].length; } public int count(int[][] M, int i, int j, int direction_i, int direction_j) { int an.转载 2020-08-03 23:59:56 · 1681 阅读 · 0 评论 -
1114. 按序打印 三种方法
AtomicInteger 0,1来保证//我们提供了一个类: //// //public class Foo {// public void one() { print("one"); }// public void two() { print("two"); }// public void three() { print("three"); }//}// //// 三个不同的线程将会共用一个 Foo 实例。 //// // 线程 A 将会调用 one() 方法 ...原创 2020-08-03 16:54:08 · 6091 阅读 · 0 评论 -
背包问题leetcode
问题一:分割等和子集(LeetCode 416)416. 分割等和子集//给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 //// 注意: //// // 每个数组中的元素不会超过 100 // 数组的大小不会超过 200 // //// 示例 1: //// 输入: [1, 5, 11, 5]////输出: true////解释: 数组可以分割成 [1, 5, 5] 和 [11].// //// //// 示.原创 2020-08-02 17:08:42 · 1314 阅读 · 0 评论 -
22. 括号生成回溯string stringbuilder
22. 括号生成//数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 //// //// 示例: //// 输入:n = 3//输出:[// "((()))",// "(()())",// "(())()",// "()(())",// "()()()"// ]// // Related Topics 字符串 回溯算法 // ???? 1205 ???? 0原创 2020-08-02 08:34:11 · 834 阅读 · 0 评论 -
会议室问题leectode
class Solution { public boolean canAttendMeetings(int[][] intervals) { Arrays.sort(intervals,(v1,v2)->v1[0]-v2[0]); for (int i = 1; i < intervals.length; i++) { //开始时间比 结束时间小 说明会议时间重叠了 返回false if(interv...原创 2020-08-01 22:38:02 · 959 阅读 · 0 评论 -
接雨水大数版本JAVA
package nk.zuoshen.com;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Code1_3 { public static void main(String[] args) throws IOException {// Scanner sc=ne.原创 2020-07-31 19:06:22 · 433 阅读 · 1 评论 -
76. 最小覆盖子串 滑动窗口
76. 最小覆盖子串class Solution { public static String minWindow(String s, String t) { if (s == null || s == "" || t == null || t == "" || s.length() < t.length()) { return ""; } //用来统计t中每个字符出现次数 int[] needs =.原创 2020-07-30 08:04:45 · 492 阅读 · 0 评论 -
387. 字符串中的第一个唯一字符---一次遍历
class Solution { public int firstUniqChar(String s) { //一次遍历 Map<Character,Integer> mymap=new HashMap<>(); List<Integer> index=new ArrayList<>(); if(s==null||s.length()==0) return -1; for(int i=0;i.原创 2020-07-29 18:22:47 · 454 阅读 · 0 评论 -
42. 接雨水 双指针
接雨水,双指针指向当前位置遍历左右(移动较低位置,木桶原理,取决于较低位置水量),移动时候更新ans于此同时更新此时左右侧最高高度(更新时则无需+=ans)42. 接雨水class Solution { public int trap(int[] height) { //左右下标 移动遍历表示当前水量高度 int left=0,right=height.length-1; //当前遍历得到的左侧和右侧最高水量 int lef原创 2020-07-29 17:08:10 · 566 阅读 · 0 评论 -
dfs求组合总和
39. 组合总和class Solution { int len=0; public List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> ans=new ArrayList<>(); //DFS模拟一个栈 LinkedList<Integer> path原创 2020-07-29 10:00:17 · 636 阅读 · 0 评论 -
最长递增序列
674. 最长连续递增序列最长递增子序列 一维dp即可 存当前最长长度,需维护最大值,class Solution { public int findLengthOfLCIS(int[] nums) { if(nums==null||nums.length==0) return 0; int len=nums.length; int maxLen=0; int[] dp=new int[len]; //需...原创 2020-07-29 09:22:30 · 713 阅读 · 0 评论 -
给定一个包含大写英文字母和数字的句子,找出这个句子所包含的最大的十六进制整数,返回这个整数的值。数据保证该整数在int表示范围内
给定一个包含大写英文字母和数字的句子,找出这个句子所包含的最大的十六进制整数,返回这个整数的值。数据保证该整数在int表示范围内import java.util.*;public class Solution { /** * * @param s string字符串 * @return int整型 */ public int solve (String s) { // write code here i.原创 2020-07-28 22:05:26 · 1237 阅读 · 0 评论 -
单个或俩个有序数组中位数
剑指 Offer 41. 数据流中的中位数 堆来实现 大堆存小部分 小堆存大部分//中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。 //// 例如, //// [2,3,4] 的中位数是 3 //// [2,3] 的中位数是 (2 + 3) / 2 = 2.5 //// 设计一个支持以下两种操作的数据结构: //// // void addNum(int num) - 从数据流中添加一个整数到数据结构中。 // double findMedi...原创 2020-07-28 16:51:02 · 355 阅读 · 0 评论 -
72. 编辑距离 dp[i][j]从word1i位置到word2 j位置最小移动
72. 编辑距离 dp[i][j]从word1i位置到word2 j位置最小移动//给你两个单词 word1 和 word2,请你计算出将 word1 转换成 word2 所使用的最少操作数 。 //// 你可以对一个单词进行如下三种操作: //// // 插入一个字符 // 删除一个字符 // 替换一个字符 // //// //// 示例 1: //// 输入:word1 = "horse", word2 = "ros"//输出:3//解释://horse -&g.原创 2020-07-28 08:49:48 · 370 阅读 · 0 评论 -
15. 三数之和 需要去重-三指针
//给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复//的三元组。 //// 注意:答案中不可以包含重复的三元组。 //// //// 示例: //// 给定数组 nums = [-1, 0, 1, 2, -1, -4],////满足要求的三元组集合为://[// [-1, 0, 1],// [-1, -1, 2]//]// // Related Topics .原创 2020-07-27 22:32:51 · 407 阅读 · 0 评论 -
两个数组的交集重复,不重复set.map
349. 两个数组的交集class Solution { public int[] intersection(int[] nums1, int[] nums2) { int len1=nums1.length; int len2=nums2.length; List<Integer> ans=new ArrayList<>(); if(len1>len2) return intersection(n原创 2020-07-27 21:01:02 · 565 阅读 · 0 评论 -
leetcode总结-回文串,回文序列
5. 最长回文子串 需要得到子串结果//DP问题 先移动j后移动iclass Solution { public String longestPalindrome(String s) { if(s==null ||s.length()==0) return ""; int len=s.length(); boolean[][] dp=new boolean[len][len]; int maxlen=0; String .原创 2020-07-27 20:20:51 · 702 阅读 · 0 评论 -
56. 合并区间-数组排序比较合并
//给出一个区间的集合,请合并所有重叠的区间。 //// 示例 1: //// 输入: [[1,3],[2,6],[8,10],[15,18]]//输出: [[1,6],[8,10],[15,18]]//解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].// //// 示例 2: //// 输入: [[1,4],[4,5]]//输出: [[1,5]]//解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。 // Related Topics 排.原创 2020-07-27 09:08:31 · 446 阅读 · 0 评论 -
java中split以“.“分割的问题转义
java中split以"."分割的问题转义 public static void main(String[] args) { String str="com.byte.dance.hotc"; String[] strs= str.split("\\."); for(String s:strs){ System.out.println(s); } }原创 2020-07-25 22:19:29 · 485 阅读 · 0 评论 -
98. 验证二叉搜索树 中序遍历或直接递归模拟中序
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { List<Integer> allTree; public boolean isValidBST(.原创 2020-07-25 16:02:29 · 402 阅读 · 0 评论 -
原地置换,手动模拟哈希表
剑指 Offer 03. 数组中重复的数字法1:HASHSETclass Solution { public int findRepeatNumber(int[] nums) { Set<Integer> set=new HashSet<>(); for(int num:nums){ if(!set.add(num)){ return num; }.原创 2020-07-25 09:19:08 · 8137 阅读 · 0 评论 -
K个一组反转链表LeetCode-JAVA实现
//给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。 //// k 是一个正整数,它的值小于或等于链表的长度。 //// 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。 //// //// 示例: //// 给你这个链表:1->2->3->4->5 //// 当 k = 2 时,应当返回: 2->1->4->3->5 //// 当 k = 3 时,应当返回: 3->2->1->.原创 2020-07-20 12:13:25 · 596 阅读 · 1 评论 -
97. 交错字符串 DP
//给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 //// 示例 1: //// 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"//输出: true// //// 示例 2: //// 输入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"//输出: false // Related Topics 字符串 动态规划//leetcode .原创 2020-07-18 09:38:10 · 456 阅读 · 0 评论 -
string排序使用字典序
package nkcodeing;import java.util.*;public class zidianxu { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); sc.close(); List<String>.原创 2020-07-16 08:55:18 · 2064 阅读 · 0 评论 -
120. 三角形最小路径和 dp-使用List
https://www.b2bchain.cn/6723.html//给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 //// 相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。 //// //// 例如,给定三角形: //// [// [2],// [3,4],// [6,5,7],// [4,1,8,3]//]// //// 自顶向下的最小路径和为 11(即,.原创 2020-07-14 09:07:12 · 254 阅读 · 0 评论 -
小红书
http://ww1.sinaimg.cn/large/006ZPDDKly1gg9enq8kesj30hb0jhmxs.jpgimport java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int nums = sc.nextInt(); int[] .原创 2020-06-29 19:55:47 · 369 阅读 · 0 评论 -
牛牛去游乐园玩过山车项目山峰问题
链接:https://ac.nowcoder.com/acm/contest/6219/B来源:牛客网题目描述 今天牛牛去游乐园玩过山车项目,他觉得过山车在上坡下坡的过程是非常刺激的,回到家之后就受到启发,想到了一个问题。如果把整个过山车的轨道当作是一个长度为n的数组num,那么在过山车上坡时数组中的值是呈现递增趋势的,到了最高点以后,数组中的值呈现递减的趋势,牛牛把符合这样先增后减规律的数组定义为金字塔数组,请你帮牛牛在整个num数组中找出长度最长的金字塔数组,如果金字塔数组不存在,请输出0。.原创 2020-07-11 21:41:20 · 427 阅读 · 0 评论 -
牛牛现在有n张扑克牌-字符串
链接:https://ac.nowcoder.com/acm/contest/6219/A来源:牛客网牛牛现在有n张扑克牌,每张扑克牌都有点数和花色两部分组成。点数为‘1’-‘9’的正整数,花色为'C','D','H','S''其中的一个,分别表示梅花、方块、红桃、黑桃。现在牛牛想按一定的顺序把这n张牌扔掉。扔牌顺序的规则如下1.:1.如果现在还剩素数张牌,则将牌顶的牌扔掉2.如果现在还剩非素数张牌,则将牌底的牌扔掉牛牛想知道他的扔牌顺序是什么,请返回扔牌顺序的字符串示例1输入复制".原创 2020-07-11 21:50:37 · 828 阅读 · 0 评论 -
78. 子集dfs回溯
//给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 //// 说明:解集不能包含重复的子集。 //// 示例: //// 输入: nums = [1,2,3]//输出://[// [3],// [1],// [2],// [1,2,3],// [1,3],// [2,3],// [1,2],// []//] // Related Topics 位运算 数组 回溯算法import java.util.ArrayList;...原创 2020-07-12 23:33:40 · 301 阅读 · 0 评论 -
174. 地下城游戏 逆向dp
174. 地下城游戏////// 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿//过地下城并通过对抗恶魔来拯救公主。 //// 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 //// 有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0.原创 2020-07-12 08:48:44 · 430 阅读 · 0 评论 -
JAVA矩阵旋转
面试题 01.07. 旋转矩阵https://www.b2bchain.cn/6570.html//给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。 //// 不占用额外内存空间能否做到? //// //// 示例 1: //// 给定 matrix = //[// [1,2,3],// [4,5,6],// [7,8,9]//],////原地旋转输入矩阵,使其变为://[// [7,4,1.原创 2020-07-10 22:01:27 · 1158 阅读 · 0 评论