LeetCode
haijiao12138
走向大佬!放纵能满足低级欲望,克制能满足高级欲望!
展开
-
二分查找/排序
二分查找/排序/二维数组中的查找/查找峰值原创 2022-10-18 21:31:01 · 122 阅读 · 0 评论 -
力扣小霸王
力扣刷题记录1017-904反转链表/最大为N的数字组合原创 2022-10-16 00:18:35 · 125 阅读 · 0 评论 -
数组转为list报错--asList的使用的坑
定义数组:Integer[] integers = new Integer[] {1, 2, 3};转化过程:List<Integer> list = Arrays.asList(integers);输出大小是:list.size();为3;再次添加元素报错: list.add(4);输出list.size();报错如下:可见:转变之后没有实现list的方法add等等,所以报错;...原创 2021-09-11 13:07:04 · 259 阅读 · 0 评论 -
Scanner的各种输入
数字输入:int i = scanner.nextInt();char类型输入:Char[j] = scanner.next().charAt(0);String类型的输入:String s = scanner.next();原创 2021-09-05 20:51:58 · 404 阅读 · 0 评论 -
奥运金牌-二维数组排序(按每行数组的第一位数排序)
代码如下:package com.haijiao12138.demo.leetcode.九月刷题.test0905;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.Comparator;/** * @author: haijiao12138 * @ClassName: 二维数组根绝每个数组的第一个值进行排序 * @description:原创 2021-09-05 14:22:20 · 414 阅读 · 0 评论 -
优先级队列
给定一个链表数组,每个链表都已经按升序排列。请将所有链表合并到一个升序链表中,返回合并后的链表。解释:PriorityQueue具有队列先入先出的特点,但优先级队列先通过一些方法对元素进行比较,最小的元素优先级最高,在访问或删除操作时只能对集合中优先级最高的元素进行。该队列不允许使用 null 元素也不允许插入不可比较的对象(没有实现Comparable接口的对象)。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]原创 2021-09-03 19:47:25 · 140 阅读 · 0 评论 -
手 写LRU算法
LRU:最近最少未使用算法package com.haijiao12138.demo.leetcode.九月刷题.test0901;import java.util.LinkedHashMap;import java.util.Map;/** * @author: haijiao12138 * @ClassName: LRUCache * @description: TODO java实现LRU算法 最近最少未使用算法 * @date: 2021/9/1 21:26 */pu原创 2021-09-01 21:44:26 · 189 阅读 · 1 评论 -
数组去重的两种方法
方法1: public static void main(String[] args) { int[] arr = {1,2,3,4,3,2,6}; test(arr); } //1-通过list去重 public static void test(int[] arr) { List<Object> list = new ArrayList<>(); for (int i = 0; i原创 2021-09-01 21:16:30 · 537 阅读 · 0 评论 -
二叉树遍历之根据前序和中序求取后序遍历
package com.haijiao12138.demo.leetcode;/** * @author: haijiao12138 * @ClassName: Tree * @description: TODO * 前序遍历:GDAFEMHZ * 中序遍历:ADEFGHMZ * 求后续遍历 * @date: 2021/8/31 11:14 */public class Tree { public static void main(String[] args) { .原创 2021-08-31 12:49:30 · 247 阅读 · 0 评论 -
不同类型的转换
char类型转换为String类型String.valueOf(s.charAt(i));int类型转换为String类型:Strings=String.valueOf(int m);String类型转换为String类型:Integera=Integer.valueOf(String s);原创 2021-08-30 20:47:34 · 142 阅读 · 0 评论 -
两个线程交替打印出奇数和偶数
package com.haijiao12138.demo.leetcode;/** * @author: haijiao12138 * @ClassName: Thread * @description: TODO * @date: 2021/8/30 18:17 */public class TestThread { public static int count=0; private static final Object object = new Object();.原创 2021-08-30 19:49:24 · 360 阅读 · 0 评论 -
自定义实现链表反转
package com.haijiao12138.demo.leetcode;/** * @author: haijiao12138 * @ClassName: Test * @description: TODO * @date: 2021/8/30 18:06 */public class Test { public static void main(String[] args) { ListNode listNode1 = new ListNode(1); .原创 2021-08-30 19:47:45 · 120 阅读 · 0 评论 -
leetcode赋值链表,一维数组和二维数组初始化(热)
二维数组初始化:定义一:int n[3][3] = {{0,0,0},{0,0,0},{0,0,0}};定义二:int[][] arr = {{1,2,3},{4,5,6}};定义三:int[][] arr1 = new int[][]{{1,2}, {2, 3}, {4, 5}};一维数组定义: int[] a = new int[3]; 直接赋值创建对象: int[] b = {1,2,3};new初始化创建对象: int[] c = new int[]{1,2,3}原创 2021-08-17 19:21:23 · 284 阅读 · 0 评论 -
LeetCode算法之22-括号生成
数字 n代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例 1:输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例 2:输入:n = 1输出:["()"]提示:1 <= n <= 8亮点:递归代码如下:class Solution { List<String> res = new ArrayList<>..原创 2021-08-09 16:59:09 · 169 阅读 · 0 评论 -
数组中奇数和偶数重新排列,奇数排在前面
-有个整数数组,里面有奇数和偶数,1)将所有奇数挪到偶数前面,2)保障所有奇数和偶数内部相对顺序不发生变化,3)在原数组上操作o(1)的空间复杂度public class Array { public static void main(String[] args) { int[] arr = {1, 2, 4, 8, 9, 6}; int[] ints = orderArray(arr); System.out.println(Arrays...原创 2021-08-05 20:34:48 · 676 阅读 · 0 评论 -
LeetCode算法之145-二叉树的遍历之-后序遍历
给定一个二叉树,返回它的 后序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]进阶:递归算法很简单,你可以通过迭代算法完成吗?F1:递归法:每次循环进入左节点,右节点和根节点,每次将对应的值加入List中去;/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeN...原创 2021-07-28 18:05:19 · 77 阅读 · 0 评论 -
LeetCode算法之141-二叉树的遍历之-前序遍历
二叉树的前序遍历难度简单610收藏分享切换为英文接收动态反馈给你二叉树的根节点root,返回它节点值的前序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:...原创 2021-07-28 17:56:07 · 96 阅读 · 0 评论 -
LeetCode算法之350-两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2,2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果nums1的大小比nums2小很多,哪种方法更优...原创 2021-07-27 09:37:03 · 139 阅读 · 0 评论 -
LeetCode算法之88-合并两个有序数组
给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1 的空间大小等于m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:nums1 = [1]...原创 2021-07-26 21:16:30 · 68 阅读 · 0 评论 -
LeetCode算法之1-两数之和
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], tar...原创 2021-07-26 20:09:00 · 70 阅读 · 0 评论 -
LeetCode算法之136-只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4亮点:亦或与操作,相同为0 相异为1class Solution { public int singleNumber(int[] nums) { int res = 0; for(i..原创 2021-07-26 17:36:51 · 61 阅读 · 0 评论 -
LeetCode算法之190-颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的示例 2中,输入表示有符号整数 -3,输出表示有符号整数 -1073741825。进阶:如果多次调用这个函数,你将如何优化你的算法?示例 1:输入:...原创 2021-07-26 16:56:28 · 80 阅读 · 1 评论 -
LeetCode算法之20-有效的括号
给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "([)]"输出:false示例5:输入:s = "{[]}"输出:true提示:1 &l...原创 2021-07-26 16:41:31 · 102 阅读 · 0 评论 -
LeetCode算法之53-最大子序和
给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组[4,-1,2,1] 的和最大,为6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000提示:...原创 2021-07-25 21:29:18 · 116 阅读 · 0 评论 -
LeetCode算法之217-存在重复元素
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true亮点:集合Set有去重的功能class Solution { public boolean containsDuplicate(int[.原创 2021-07-25 21:21:57 · 92 阅读 · 0 评论 -
红黑树的特性
红黑树定义与描述: 近似平衡的二叉树 心是黑的-->根是黑的 要么红 要么黑 两颗红心不能靠近--> 不能有连续的两个红色节点 所有的叶子节点都是黑色的 从任意一个节点开始 到其所有的叶子节点经过的黑色的节点数量一致 图解如下:黑色代表黑节点,红色代表红节点;...原创 2021-07-12 23:50:57 · 79 阅读 · 2 评论 -
两个栈实现一个队列-java
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路: 一个栈进数据 等进完数据后 往另一个栈中放数据 等放完数据后 另一个栈开始出数据相当于出栈操作;代码实现:public class solution2 { Stack<Integer> stack1 = new Stack<Integer>();//栈1 Stack<Integer> stack2 = new Stack<Inte原创 2021-07-12 23:46:37 · 360 阅读 · 0 评论 -
java基础-数组扩容
数组与链表的比较: 数组通过下标访问的话是O(1) 数组一旦声明 长度就是固定的 数组的数据是物理逻辑均连续的 链表增删要快一些, 数组遍历快一些 长度一定的话, 数组的存储空间比链表要小 ArrayList:ArrayList是List接口的实现类,它是支持根据需要而动态增长的数组;java中标准数组是定长的,在数组被创建之后,它们不能被加长或缩短。这就意味着在创建数组时需要知道数组的所需长度,但有时我们需要动态程序中获取数组长度。Ar...原创 2021-07-12 21:39:29 · 521 阅读 · 1 评论 -
128陷阱-讲解
publicclassTest{publicstaticvoidmain(String[]args){ inta1=30; inta2=30;//值比较:trueSystem.out.println(a1==a2);intb1=130;intb2=130;//值比较:trueSystem.out.println(b1==b2);...原创 2021-07-10 22:00:06 · 117 阅读 · 0 评论 -
数据结构
1-单链表的实现 尾插法package cn.CaiNiao.linkNode;//链表节点定义public class Node { public int value; public Node next; //输出打印节点 @Override public String toString() { return "Node{" + "value=" + value + ", next=" + next + '}'; }}.原创 2021-01-04 18:49:37 · 75 阅读 · 0 评论 -
反转链表
假设存在链表1 → 2 → 3 → Ø,我们想要把它改成Ø ← 1 ← 2 ← 3。public ListNode reverseList(ListNode head) { ListNode prev = null; ListNode curr = head; while (curr != null) { ListNode nextTemp ...原创 2020-02-28 15:48:38 · 116 阅读 · 0 评论 -
2-杨辉三角
给定一个非负整数numRows,生成杨辉三角的前numRows行。输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]class Solution { public List<List<Integer>> generate(int numRows)...原创 2020-02-28 15:14:56 · 229 阅读 · 0 评论 -
2-两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。给定 1->2->3->4, 你应该返回 2->1->4->3class Solution { public ListNode swapPairs(ListNode* head) { if(!head || !head->next) return head;...原创 2020-02-28 14:47:11 · 107 阅读 · 0 评论 -
编写一个函数,其作用是将输入的字符串反转过来。(反转字符串)
示例 1:输入: “hello” 输出: “olleh”示例 2:输入: “A man, a plan, a canal: Panama” 输出: “amanaP :lanac a ,nalp a ,nam A”F1:public String reverseString(String s) { char[] chars = s.toCharArray();...原创 2020-02-28 11:16:39 · 4760 阅读 · 0 评论 -
2. 两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&...原创 2020-02-27 00:30:38 · 113 阅读 · 0 评论 -
1. 两数之和
给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]代码如下:...原创 2020-02-24 00:24:26 · 239 阅读 · 0 评论