基础算法
基础算法:
排序
二分
高精度
前缀和与差分
双指针算法
位运算
离散化
区间合并
....
carroll18
你想要拥有你从未有过的东西,你必须去做你从未做过的事情。
展开
-
21. 合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4递归class Solution { public ListNode mergeTwoLists(ListNode l1, List...原创 2020-04-12 20:14:49 · 105 阅读 · 0 评论 -
查找算法
线性查找 //线性查找 public static int seqSearch(int[] arr,int value){ for (int i = 0; i < arr.length; i++) { if (arr[i] == value){ return i; } }...原创 2020-02-03 13:07:29 · 196 阅读 · 0 评论 -
【高级程序员必备】常见的八大排序算法总结
常见的八大排序算法总结冒泡排序规则:一共进行数组的大小 - 1次的循环每一堂排序的次数逐渐在减少在某趟排序中,没有发生一次交换,可以提前结束排序//冒泡排序法public class BubbleSort { public static void main(String[] args) { int[] array = new int[]...原创 2020-02-03 13:06:30 · 450 阅读 · 1 评论 -
461. 汉明距离
位运算class Solution { public int hammingDistance(int x, int y) { int xor = x^y; int count = 0; while(xor!=0){ if(xor%2==1){ count++; ...原创 2020-04-30 20:22:05 · 168 阅读 · 0 评论 -
344. 反转字符串
异或运算交换两个值 a = a^b b = a^ba = a^bb = 原来的aa = 原来的b位运算 + 双指针class Solution { public void reverseString(char[] s) { int l = 0,r = s.length-1; while(l<r){ s[l] ...原创 2020-04-21 21:28:06 · 161 阅读 · 0 评论 -
136. 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4位运算class Solution { public int singleNum...原创 2020-04-23 16:10:18 · 105 阅读 · 0 评论 -
389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例:输入:s = "abcd"t = "abcde"输出:e解释:‘e’ 是那个被添加的字母。ASCII码运算class Solution { public char findTheDifference(Str...原创 2020-04-10 20:39:14 · 125 阅读 · 0 评论 -
190. 颠倒二进制位
颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00...原创 2020-04-10 20:25:04 · 98 阅读 · 0 评论 -
位运算
基本知识191. 位1的个数编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。提示:请注意,在某些语言(如 Java)中,没...原创 2020-05-16 23:42:48 · 109 阅读 · 0 评论 -
面试题57 - II. 和为s的连续正数序列
滑动窗口class Solution { public int[][] findContinuousSequence(int target) { List<int[]> list = new ArrayList<>(); for(int l = 1,r = 1,sum = 0;r<target;r++){ sum += r; while(sum>target){ ..原创 2020-05-08 21:06:09 · 113 阅读 · 0 评论 -
LeetCode滑动窗口系列秒杀
文章目录76. 最小覆盖子串438. 找到字符串中所有字母异位词3. 无重复字符的最长子串567. 字符串的排列76. 最小覆盖子串原题地址class Solution { public String minWindow(String s, String t) { //needs存储t的<字符,出现次数>,windows存储<s中与t中字符相...原创 2020-05-19 11:32:06 · 215 阅读 · 0 评论 -
300. 最长上升子序列
class Solution { public int lengthOfLIS(int[] nums) { if(nums.length==0) return 0; int[] dp = new int[nums.length]; dp[0] = 1; int maxans = 1; for(int i = 1;i<nums.length;i++){ int maxval = 0; .原创 2020-05-17 14:27:04 · 103 阅读 · 0 评论 -
LeetCode二分查找问题全集
文章目录二分查找框架704. 二分查找34. 在排序数组中查找元素的第一个和最后一个位置33. 搜索旋转排序数组81. 搜索旋转排序数组 II153. 寻找旋转排序数组中的最小值154. 寻找旋转排序数组中的最小值 II300. 最长上升子序列二分查找框架int binarySearch(int[] nums, int target) { int left = 0, right = ....原创 2020-05-19 11:29:15 · 268 阅读 · 0 评论 -
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 7输出: 4示例 3:输入: [1,3,5,6], 0输出: 0二分法class Solution ...原创 2020-04-12 20:54:46 · 91 阅读 · 0 评论 -
面试题11. 旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0解题思路:暴力法:遍历数组,只要后一个小于前一个...原创 2020-04-09 22:04:05 · 142 阅读 · 0 评论 -
二分查找
算法模板原创 2020-05-16 23:43:27 · 102 阅读 · 0 评论 -
BFPTR排序算法(O(n)时间复杂度)
BFPTR算法,又称为中位数的中位数算法,它的最坏时间复杂度为O(n),它是由Blum、Floyd、Pratt、Rivest、Tarjan提出。该算法的思想是修改快速选择算法的主元选取方法,提高算法在最坏情况下的时间复杂度。...原创 2020-07-28 17:20:53 · 522 阅读 · 0 评论 -
347. 前 K 个高频元素
最小堆class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer,Integer> map = new HashMap<>(); for(int num:nums){ map.put(num,map.getOrDefault(num,0)+1); } PriorityQueue<I..原创 2020-05-09 10:42:05 · 134 阅读 · 0 评论 -
75. 颜色分类
简单来看 ,这道题考察的就是排序算法。class Solution { /* 荷兰三色旗问题解 */ public void sortColors(int[] nums) { int p0 = 0, curr = 0; int p2 = nums.length - 1; while (curr <= p2) { if (nums[...原创 2020-04-28 21:51:23 · 177 阅读 · 0 评论 -
面试常问的六大排序算法(代码+动画图解)
文章目录选择排序插入排序希尔排序冒泡排序选择排序动画演示代码实现public class selectSort { public static void main(String[] args) { int[] nums = {1,5,6,2,3,4,7,8,9}; selectSort(nums); for (int n...原创 2020-04-27 18:47:24 · 1173 阅读 · 6 评论 -
215. 数组中的第K个最大元素
class Solution { public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[nums.length-k]; }}class Solution { public int findKthLargest(int[] nums, ...原创 2020-04-26 09:39:07 · 162 阅读 · 0 评论