
算法总结
学习的算法总结
海拉鲁小肥宅
微懒,微帅,微高,信奉公平和正义。
展开
-
二分法
递归实现 public int findPosition(int[] nums, int target) { return binarySearch(nums, 0, nums.length - 1, target); } public int binarySearch(int[] nums, int start, int end, int target) { if (start > end) { return -1; } int mid = (start + end) / 2;原创 2021-03-23 00:13:20 · 91 阅读 · 0 评论 -
常见的时间复杂度
复杂度 算法集 备注 位运算 常数集复杂度 二分法,倍增法,快速幂算法,辗转相除法 枚举法,双指针算法,单调栈算法,KMP算法,Rabin Karp,Manacher's Algorithm 又称作线性复杂度 快速排序,归并排序,堆排序 枚举法,动态规划,Dijkstra 枚举法,动态规划,Floyd 与组合有关的搜索问题 与排列有关的搜索...原创 2021-03-22 10:46:40 · 149 阅读 · 0 评论 -
排序算法
2021-03-21 快速排序算法 先整体后局部 public int[] sortArray(int[] nums, int start, int end) { if (start >= end) { return nums; } int left = start, right = end; int pivot = nums[(start + end) / 2]; while (left <= right) { while (left <= right原创 2021-03-22 00:17:43 · 85 阅读 · 0 评论 -
两数之和
nums = [6, 4, 2, 9] target = 10 return 4 and 6 思路1 暴力解法 public int[] twoSum(int[] numbers, int target) { if (numbers == null) { return new int[]{}; } for (int left=0; left<numbers.length; left++) { int right=numbers.length-1; while (left原创 2021-03-21 23:43:14 · 118 阅读 · 0 评论 -
复杂度理论
概述 量化一个算法的时间和空间 时间复杂度 基本可以确定是二分法 多项式(Polynomial):一般在底数位置,不在幂次项 // / / 非多项式(Nondeterministic Polynomial) // 小o:最好复杂度 大O:最坏复杂度 只考虑最高项 不考虑常数项和系数 空间复杂度 编程复杂度 ...原创 2021-03-21 19:13:59 · 232 阅读 · 0 评论