![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法学习
文章平均质量分 63
愿逐月华!
这个作者很懒,什么都没留下…
展开
-
leetcode 二分查找
最大子序和递归回溯定义参数和返回值确定终止条件单层的逻辑动态规划设计状态写出状态转移方程设定初始状态执行状态转移返回最终的解贪心原创 2022-05-05 22:18:49 · 212 阅读 · 0 评论 -
leetcode 二
力扣3. 无重复字符的最长子串题目连接给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的原创 2022-04-19 22:42:51 · 177 阅读 · 0 评论 -
两数,三数,四数之和 ---- 解法及优化
1 两数之和两数之和 ---- 题目链接要求:给定一个整数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。假设每种输入只会对应一个答案,但是不能重复利用这个数组中同样的元素1.1 双层for(枚举):枚举在数据中所有的不同的两个下标的组合逐个检查他们所对应的数的和是否等于target时间复杂度:O(n²),这里n为数组长度空间复杂度:O(1),只用到常数个临时变量public int[] twoSum(int[] nums,i原创 2022-04-15 11:55:56 · 144 阅读 · 0 评论 -
力扣4,46 两个数组合并后的中位数,全排列
1 中位数要求:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。思路:合并排序判断奇偶 public static void main(String[] args) { int[] a = {1, 3}; int[] b = {2, 4}; double res; int[] t = new int[a.length + b.length];原创 2022-04-10 11:16:29 · 607 阅读 · 0 评论 -
如何合并两个数组
1. 遍历两个数组放入另一个 /* 遍历两个int[] 遍历放入一个数组 */ public static int[] conTwoArrays(int[] a,int[] b){ int[] res=new int[a.length+b.length]; for (int i = 0; i < res.length; i++) { if (i<a.length){ res[原创 2022-04-08 14:48:50 · 4395 阅读 · 0 评论 -
力扣26,27 -- 有序数组去重,移除元素
要求:给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。当前下标[0] 与其后一个下标比较[1] ,相等则覆盖重复的下标public class ArrayDistinct { public int .原创 2022-04-01 11:18:05 · 247 阅读 · 0 评论 -
MP分布式自增id生成 ---- 雪花算法
1 雪花算法:分布式ID生成器雪花算法是由Twitter公布的分布式主键生成算法,它能够保证不同表的主键的不重复性,以及相同表的主键的有序性。1.1 核心思想:长度共64bit(一个long型)。首先是一个符号位,1bit标识,由于long基本类型在Java中是带符号的,最高位是符号位,正数是0,负数是1,所以id一般是正数,最高位是0。41bit时间截(毫秒级),存储的是时间截的差值(当前时间截 - 开始时间截),结果约等于69.73年。10bit作为机器的ID(5个bit是数据中心,5个bi原创 2022-03-24 23:28:47 · 2047 阅读 · 0 评论 -
冒泡排序的优化
int[] a={85,45,14,6,98,75}; for (int i = 1; i < a.length; i++) { for (int j=0;j<a.length-i;j++){ if (a[j]>a[j+1]){ int t=a[j]; a[j]=a[j+1]; a[j+1]=...原创 2022-03-14 09:17:54 · 147 阅读 · 0 评论 -
力扣15 学习总结java三数之和
要求给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例2:输入:nums = [ ]输出:[ ]示例3:输入:nums = [0]输出:[]public static List<List<Integ原创 2021-11-25 12:14:37 · 1107 阅读 · 1 评论 -
力扣1 学习总结java两数之和(枚举,hashmap)
要求:给定一个整数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。假设每种输入只会对应一个答案,但是不能重复利用这个数组中同样的元素1.枚举:枚举在数据中所有的不同的两个下标的组合逐个检查他们所对应的数的和是否等于target时间复杂度:O(n²),这里n为数组长度空间复杂度:O(1),只用到常数个临时变量public int[] twoSum(int[] nums,int target){ int[] array原创 2021-11-21 13:16:08 · 530 阅读 · 0 评论