
算法
皮蛋zzz
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1218-2019-LEETCODE-42-接雨水-84-柱状图中最大的矩形-739-每日温度
几种解法:按行加 public int trap(int[] height) { int sum = 0; int max = getMax(height);//找到最大的高度,以便遍历。 for (int i = 1; i <= max; i++) { boolean isStart = false; //标...原创 2019-12-18 21:46:05 · 204 阅读 · 0 评论 -
2020-08-19-对链表进行插入排序(O(1) 的空间复杂度)
代码参考来自:https://leetcode-cn.com/problems/insertion-sort-list/comments/ public ListNode insertionSortList(ListNode head) { ListNode dummy = new ListNode(-1); dummy.next = head; ListNode pre; while (head != null && h原创 2020-08-19 11:17:30 · 302 阅读 · 0 评论 -
2020-0817-归并排链表(递归和迭代)
递归:https://leetcode-cn.com/problems/sort-list/solution/sort-list-gui-bing-pai-xu-lian-biao-by-jyd/class Solution { public ListNode sortList(ListNode head) { if (head == null || head.next == null) return head; ListNode fast原创 2020-08-17 22:53:45 · 166 阅读 · 0 评论 -
2020-08-17-O(1)空间复杂度的反转栈
//反转一个栈 public void reverse(Stack<Integer> stack) { if (stack.isEmpty()) return; int value = getBottom(stack); reverse(stack); stack.push(value); } private int getBottom(Stack<Integer> stack) { .原创 2020-08-17 22:26:04 · 193 阅读 · 0 评论 -
2020-08-17-找小于n的素数的个数(厄拉多塞筛法)
笨重的解法,利用相对较大的素数都是 6n - 1 或者 6n + 5class Solution { public int countPrimes(int n) { if(n < 3) return 0; int res = 0; n -= 1; while(n >= 2) { if(isPrime(n)) { res++; }原创 2020-08-17 16:40:49 · 436 阅读 · 0 评论 -
2020-0807-背包问题九讲(待完善)
代码和思想:来源于大雪菜网站:https://www.acwing.com/about/遍历物品 -> 遍历约束条件 -> 遍历决策01背包问题每一个物品只能选一个,或者不选,求不超出容量的物品的最大价值。二维dp,遍历约束(体积),是什么顺序就无所谓了。import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner原创 2020-08-07 15:31:48 · 251 阅读 · 0 评论 -
2020-0806-位运算
public int hammingWeight(int n) { int res = 0; while(n != 0) { res++; n &= (n - 1); } return res; }算一个数二进制的1的位数时,学到的东西。n = n & (n - 1);会把最后一个1减去n -= n & (-n); n & ( - n) 相当于得.原创 2020-08-06 14:55:21 · 128 阅读 · 0 评论 -
1203-2019-算法-马踏棋盘算法(深度优先的遍历、回溯 + 最后的贪心算法加以优化)
关键是理解package HorseChessBoard;import java.awt.*;import java.util.ArrayList;import java.util.Comparator;/** * @author pdzz * @create 2019-12-03 15:00 */public class HorseChessBoard { pri...原创 2019-12-03 17:03:11 · 239 阅读 · 0 评论 -
1203-2019-算法-弗洛伊德算法(最短路径算法-Floyd算法)
Floyd算法与Dijkstra不一样的地方在于他可以计算出任意一个顶点到其他顶点的最短距离。最后全部保存在dis[ ][ ] 的二维数组中。package Floyd;import java.util.Arrays;/** * @author pdzz * @create 2019-12-03 10:03 */public class Floyd { public st...原创 2019-12-03 16:58:04 · 169 阅读 · 0 评论 -
1202-2019-算法-迪杰斯特拉算法(最短路径算法-Dijkstra算法)
核心是动态更新三个数组:① 是否已经访问过。② 从G到任意一个点的最短距离。③ 每一个结点的前一个结点的下标代码的关键:假如G为起点,先到可以直接到达的顶点,再找路径最短的那个顶点到其他没有到过的顶点。package Dijkstra;import java.util.Arrays;/** * @author pdzz * @create 2019-12-02 17:1...原创 2019-12-03 09:28:32 · 169 阅读 · 0 评论 -
1201-2019-算法-克鲁斯卡尔算法(最小生成树MST-Kruskal算法)
① Kruskal算法先对路径的权值进行排序② 再在图中加入这个路径(要求不产生回路)。关键就是不能形成回路。判断是否为回路的准则是:两个顶点例如(C-E)是否有同一个终点。关键代码:关键代码是end数组的生成,end数组用来记录每个顶点的终点。(end[ ]也是逐步完善的,一步一步填)package Kruskal;/** * @author pdzz * @create 20...原创 2019-12-01 11:02:08 · 262 阅读 · 0 评论 -
1129-2019-算法-普里姆算法(最小生成树MST-Prim算法)
最小生成树MST(Minimum Cost Spanning Tree )普里姆算法和克鲁斯卡尔算法Prim算法目的:求出最小连通子图package Prim;import java.util.Arrays;/** * @author pdzz * @create 2019-11-30 10:22 */public class Prim { public st...原创 2019-11-30 11:23:22 · 186 阅读 · 0 评论 -
1129-2019-算法-贪心算法
贪心算法不一定是最优算法。package GreedyAlgorithm;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;/** * @author pdzz * @create 2019-11-29 16:10 */public class GreedyAlgor...原创 2019-11-29 17:01:56 · 131 阅读 · 0 评论 -
1129-2019-算法-KMP算法
KMP算法的关键是得到较短字符的部分匹配表(next数组)package KMP;import java.util.Arrays;/** * @author pdzz * @create 2019-11-29 9:25 */public class ViolenceMatch { public static void main(String[] args) { ...原创 2019-11-29 16:59:28 · 173 阅读 · 0 评论 -
1128-2019-算法-动态规划(DP解决背包问题)
要理解的是动态规划的每次求二维数组的值都和之前的值有关系(要比较判断最优的条件)package DynamicProgramming;/** * @author pdzz * @create 2019-11-28 16:39 */public class KnapsackProblem { public static void main(String[] args) {...原创 2019-11-28 17:22:43 · 220 阅读 · 0 评论 -
1128-2019-算法-分治算法(汉诺塔实例)
要理解代码的实质是分治和递归的结合。package HanoiTower;/** * @author pdzz * @create 2019-11-28 11:19 */public class HanoiTower { public static void main(String[] args) { HanoiTower hanoiTower = new...原创 2019-11-28 17:15:18 · 110 阅读 · 0 评论 -
1128-2019-算法-二分查找算法
package BinarySearch;import org.junit.Test;/** * @author pdzz * @create 2019-11-28 10:40 */public class BinarySearch { public int binarySearch(int[] nums, int target){ //默认升序排列 ...原创 2019-11-28 17:13:31 · 183 阅读 · 0 评论