
算法
喵喵队摸鲨鱼
用时间换能力,用能力换时间
展开
-
java文件压缩
package com.util;import java.io.*;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;public class GZipUtils { public static final int BUFFER = 1024; public static final String EXT = ".gz";// public static void ma原创 2022-02-10 09:29:12 · 242 阅读 · 0 评论 -
获取map中第一个key值
/** * 获取map中第一个key值 * * @param map 数据源 * @return */ public static String getKeyOrNull(Map<String, Object> map) { String obj = null; for (Map.Entry<String, Object> entry : map.entrySet()) {原创 2022-01-17 18:41:09 · 5400 阅读 · 0 评论 -
java逢一进十
/*** 将数值在up位置的数字向上进十 如:853 - - > 860* @param value* @param up 数值的位置(1 - 个位 10 - 倒数第二位 100 - 倒数第三位 …)* @return 整数*/public static BigDecimal _num_decimal_up(BigDecimal value,int up){value = _num_null_to_bigdecimal(value, BigDecimal.ZERO);return va原创 2021-12-29 10:13:47 · 470 阅读 · 1 评论 -
雪花算法(记录)
package com.util;/** * 分布式雪花ID算法 * * @author zhi * @since 2019年5月14日16:51:06 * */public class SnowFlake { /** * 起始的时间戳 */ private final static long twepoch = 1557825652094L; /** * 每一部分占用的位数 */ private final st转载 2021-12-28 18:00:07 · 109 阅读 · 0 评论 -
183.从不订货的客户 leetcode
【题目】下面是学生的名单,表名为“学生表”;近视学生的名单,表名为“近视学生表”。请问不是近视眼的学生都有谁?(“学生表”表中的学号与“近视学生”表中的学生学号一一对应)【解题思路】1.我们先来拆解问题:不是近视眼的学生都有谁?1)“不是近视眼”的学生,近视信息在“近视学生”表里2) “学生都有谁?”,要求的是“学生姓名”,所以我们的输出答案应该是“学生姓名”,这在“学生”表里。涉及2张以上表的查询时,我们需要用到多表联结。2.使用哪种联结呢?在《从零学会SQL:多表查询》这个课里我讲过转载 2021-10-13 10:27:50 · 115 阅读 · 0 评论 -
121. 买卖股票的最佳时机
买卖股票的最佳时机 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4] 输出:5 解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5 。..原创 2021-10-01 22:03:47 · 92 阅读 · 0 评论 -
67.二进制求和 leetcode
给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = "11", b = "1"输出: "100"示例 2:输入: a = "1010", b = "1011"输出: "10101"提示:每个字符串仅由字符 '0' 或 '1' 组成。1 <= a.length, b.length <= 10^4字符串如果不是 "0" ,就都不含前导零。该题难点在于了解二进制算法,二进制是逢二进一,然后巧妙的.原创 2021-09-24 10:50:42 · 138 阅读 · 0 评论 -
66.加一 leetcode
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]该题重点在于除 9 之外的数.原创 2021-09-22 17:16:10 · 88 阅读 · 0 评论 -
58.最后一个单词的长度 leetcode
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5示例 2:输入:s = " fly me to the moon "输出:4示例 3:输入:s = “luffy is still joyboy”输出:6提示:1 <= s.length <= 104s 仅有英文字母和空格 ’ ’ 组成s 中至.原创 2021-09-22 16:00:00 · 75 阅读 · 0 评论 -
53.最大子序和 leetcode
给定一个整数数组 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提示:1 <= n.原创 2021-09-22 15:16:45 · 82 阅读 · 0 评论 -
35.搜索插入位置 leetcode
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,3,5,6], targe.原创 2021-09-22 13:47:03 · 91 阅读 · 0 评论 -
27.移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝int .原创 2021-09-18 17:35:12 · 79 阅读 · 0 评论 -
26.删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nu.原创 2021-09-18 17:24:10 · 79 阅读 · 0 评论 -
21.合并两个升序链表
双指针查找public static void main(String[] args) { ListNode listNode1 = new ListNode(1); ListNode listNode2 = new ListNode(2); ListNode listNode3 = new ListNode(3); ListNode listNode4 = new ListNode(4); ListNode listNode5 = new ListNode(5);原创 2021-09-18 11:04:45 · 110 阅读 · 0 评论 -
20.有效括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:truepublic boolean isVal.原创 2021-09-18 09:28:43 · 79 阅读 · 0 评论 -
最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入:strs = ["flower","flow","flight"]输出:"fl"示例 2:输入:strs = ["dog","racecar","car"]输出:""解释:输入不存在公共前缀。 提示:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成public原创 2021-09-17 17:53:10 · 70 阅读 · 0 评论 -
leetcode整数反转
利用stringBuilder的反转方法public boolean isPalindrome(int x) { String reversedStr = (new StringBuilder(x + "")).reverse().toString(); return (x + "").equals(reversedStr);}利用整数特性public boolean isPalindrome(int x) { // 如果小于0则不是回文数原创 2021-09-15 15:20:48 · 139 阅读 · 0 评论 -
leetcode不重复字符串取最长串
// 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 public static int lengthOfLongestSubstrings(String s) { int n = s.length(), ans = 0; Map<Character, Integer> map = new HashMap<>(); for (int end = 0, start = 0; end < n; end+原创 2021-09-10 15:29:43 · 88 阅读 · 0 评论 -
leetcode两数相加题解
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * }原创 2021-09-09 18:11:03 · 75 阅读 · 0 评论 -
枚举迭代根据key查询value
package com.aukey.tracking.self.domain.enums;import lombok.AllArgsConstructor;import lombok.Getter;import java.util.Arrays;@AllArgsConstructor@Getterpublic enum TrackingEnum { PENDING("pending","查询中"), NOTFOUND("notfound","查询不到"), TRAN原创 2021-07-12 11:08:32 · 196 阅读 · 0 评论 -
java十大内部排序算法
算法的5大特征输入有0个或者多个输入数据,这些输入必须有清楚的描述和定义输出至少有1个或者多个输出结果,不可以没有输出结果有穷性算法在有限的步骤之后会自动结束而不会无限循环,并且每一个步骤可以在可接受的时间内完成确定性算法中的每一个步骤都有确定的含义,不会出现二议性可行性算法的每一步都是清楚且可行的,能让用户用纸和笔计算而求出答案、说明:满足确定性的算法也可以称为:确定性算法。现在人们也关注更广泛的概念,例如考虑各种非确定性的算法,如并行算法,概率算法等。另外,人们也关注并不要求原创 2021-04-20 10:43:44 · 107 阅读 · 0 评论 -
java二分法查找
public class arrayTest3 { public static void main(String[] args) { // 前提:数据是有序的 int[] ints = {0,1,2,3,45,49,98,688}; // 设定需要查找的值 int index=98; // 设定开始位置 int begin=0; // 设定结束位置 int end=ints原创 2021-01-24 22:11:06 · 103 阅读 · 0 评论 -
java进行数组反转
public class arrayTest2 { public static void main(String[] args) { // 实例化一组数组 int[] ints = {1, 2, 3, 4, 5, 6, 7, 8}; // 从中间进行切割 for (int i = 0; i < ints.length / 2; i++) { // 把获取的数值进行临时存储 int x原创 2021-01-24 21:46:25 · 140 阅读 · 1 评论 -
java计算杨辉三角形
什么是杨辉三角形public class arrayTest { public static void main(String[] args) { // 实例化一个10行的数组 int[][] yang=new int[10][]; for (int i = 0; i < yang.length; i++) { // 动态添加列 yang[i]=new int[i+1];原创 2021-01-24 21:34:47 · 256 阅读 · 0 评论