
数据结构与算法
文章平均质量分 75
千篇不一律
要么行动,要么行动
展开
-
java-数据结构
文章目录排序map&&数组排序排序map&&数组排序 public static void main(String[] args) { TreeMap<Integer, Integer> treeMap = new TreeMap<>(Comparator.reverseOrder()); treeMap.put(1,8); treeMap.put(6,9); treeMap.put(原创 2021-03-29 19:00:18 · 110 阅读 · 0 评论 -
算法专题之字典树
转载自https://leetcode-cn.com/problems/implement-trie-prefix-tree/solution/shi-xian-trie-qian-zhui-shu-by-leetcode/转载 2019-12-23 14:10:33 · 153 阅读 · 0 评论 -
算法专题之字符串
toCharArrayString string=“hello world”;char[] chars=string.toCharArray();结果是: [h,e,l,l,o, ,w,o,r,l,d]substringString string=“hello world”;String substr=string.substring(0,3);结果是: hel【截...转载 2019-12-23 09:59:06 · 289 阅读 · 0 评论 -
java数据结构类--笔记
程序的灵魂是算法。提到算法,肯定离不开数据结构。今天就聊一聊java中的和数据结构相关的类。java.util包concurrent包里面是和并发编程相关的类主要是:原子类–锁--并发的数据结构类【队列,链表,哈希…】atomic—原子类【https://blog.youkuaiyun.com/boom_man/article/details/78352722】locks—锁Lock锁和同...原创 2019-12-19 10:04:53 · 283 阅读 · 0 评论 -
算法专题之排序
1.构造二叉搜索树,再中序遍历class Solution { public int[] sortArray(int[] nums) { if(nums.length <=1)return nums; //qSort(nums,0,nums.length-1); //selectSort(nums); // insertSort(n...原创 2019-11-29 22:31:49 · 115 阅读 · 0 评论 -
算法专题之树
通用的二叉树遍历/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {...原创 2019-11-27 06:34:51 · 143 阅读 · 0 评论 -
重刷leedcode(21-30)
21. 合并两个有序链表/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNo...原创 2019-11-20 07:41:46 · 175 阅读 · 0 评论 -
重刷leedcode(11-20)
重刷leedcode(11-20)1111原创 2019-11-15 20:18:55 · 117 阅读 · 0 评论 -
重刷leedcode(1-10)
哈哈原创 2019-11-06 12:40:06 · 247 阅读 · 0 评论 -
力扣每日一题笔记
力扣每日一题笔记1.两数之和转自1.两数之和array和map联合使用,取长补短.map中存入Array[i]作为键,将对应的下标作为值Array[i]iKV转自https://github.com/Blankj/awesome-java-leetcode...转载 2019-10-13 23:13:30 · 549 阅读 · 0 评论 -
内修算法之队列
杀死进程给你n个进程,每个进程都有一个唯一的PID(process id)和PPID(parent process id)。每个进程最多只有一个父进程,但可能有多个子进程。如果一个进程的PPID为0,表示它没有父进程。如果一个进程被杀死,那么它的子进程也会被杀死。输入两个相同长度的整数链表,第一个链表是每个进程的PID,第二个链表是对应位置进程的PPID,再输入一个将被杀死的进程的PID,请输出...原创 2019-08-28 06:26:10 · 1208 阅读 · 0 评论 -
树的先序,中序,后序遍历
先序输出:根左右(左子树,右子树)A B D G H E C K F I J中序输出:(左根右)G D H B E A K C I J F后序输出:(左右根)G H D E B K J I F C A先序:ABC中序:CBA元素全在树的左边,先序和中序顺序相反先序:ABC中序:ABC元素全在树的右边,先序和中序顺序相同对于后序遍历而言,树的第一个根节点总是最后输出的...原创 2019-08-03 20:28:08 · 751 阅读 · 0 评论 -
队列式和优先队列分支限界解01背包过程
[]........当前队列内的元素......表示下一个可扩展的结点=>.....箭头右边的表示要入队的结点k(45)....(1,0,0)表示走到了叶结点,所以进行一次输出原创 2019-06-03 07:52:19 · 2415 阅读 · 0 评论 -
栈,队列,映射Map和集合Set
栈如图:队列如图:list允许有重复:底层实现是数组或链表,插入是O(1),查找是O(n)set自动去重:底层实现是哈希表(元素乱序)或二叉树(元素是排好序的),查找是O(1)或者O(log n)linked list链表(一个指针域)是特殊化的tree树(二个指针域)tree树(单向链)是特殊化的graph图(随便链,可链回到自己)1.1二叉搜索树:又叫排序...原创 2019-04-27 21:44:30 · 256 阅读 · 0 评论 -
动态规划算法解01背包问题(思路及算法实现)
说明:算法源自教材。本文相当于对教材做的一个笔记(动态规划与贪心算法解01背包必须先对背包按照单位重量的价格从大到小排序,否则拆分的子问题就不具备最优子结构的性质)动态规划算法:动态规划就是一个填表的过程。该表记录了已解决的子问题的答案。求解下一个子问题时会用到上一个子问题的答案。{比如01背包问题:假如有1个背包,背包容量是10,有5个物品,编号为1,2,3,4,5,他们都有各自的...原创 2019-05-13 21:43:40 · 81174 阅读 · 9 评论 -
常见时间复杂度一览表
常见函数的增长率:排序算法的时间复杂性:选择排序 O(n^2) O(n^2) O(n^2) 不稳定 数据结构时间复杂度和空间复杂度:原创 2019-05-14 07:41:06 · 4244 阅读 · 0 评论 -
贪心算法解背包问题
辨析:背包问题能用贪心算法求解,但是01背包问题不能用贪心算法求解(因为01背包问题不具备贪心选择性质----通过局部最优,达不到全局最优) 举个例子:背包容量=50; w[]={10,20,30} ,p[]={60,100,120} 用贪心选择(10+20)<50,p=160,但这并不是最优解,事实上(20+30)=50,p=100+120=220.才是问题的...原创 2019-05-19 11:09:11 · 27504 阅读 · 0 评论 -
数据结构思维导图及一些概念的辨析
宏观图:概念:数据结构的定义: 数据结构( data structure)是相互之间存在一种或多种特定关系的数据元素的集合,在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素相互之间的关系称为结构(结构=关系)。(【元素+关系】 的集合就叫数据结构)关系(或结构)的划分:1.集合关系: 元素之间只有 “同属于一个集合”的...转载 2019-05-19 11:42:17 · 1358 阅读 · 0 评论 -
eclipse CDT报错解决方案:Error: Program "make" not found in PATH
eclipse cdt Program "make" not found in PATH1.2.3.4.5.6.原创 2019-05-17 19:31:18 · 29135 阅读 · 5 评论 -
优先队列式分支限界法解01背包
概念: 分支限界采用的是广搜。 优先队列采用的是队列里最优的出队。(这里采用最大堆来实现活结点优先队列,最大堆以活结点的界值作为优先级)说明: 对于优先队列式分支限界法解01背包,实际上是广搜遍历生成树的过程。因为01背包。背包只有选和不选。所以该生成树是一个二叉树。假设规定左叉标1(代表选择该物品装入背包),右叉标0(代表不选择该物品装入背包)。给定示例输入:背包容...原创 2019-05-18 19:17:42 · 20328 阅读 · 3 评论 -
回溯法解01背包问题
概念: 回溯法采用深搜+剪枝来搜索生成树:步骤:1.假设规定左叉标1(代表选择该物品装入背包),右叉标0(代表不选择该物品装入背包)。给定示例输入:背包容量c=10物品个数n=5物品重量w={2,2,6,5,4}物品价格p={6,3,5,4,6}注意: 左子树的解的上界与父节点相同,不用计算。右子树的解的界值:较好的就算方法是将剩余物品依其单位重量价...原创 2019-05-18 19:44:32 · 27885 阅读 · 2 评论 -
快排和归并时间复杂度为何是O(nlogn)
快排是从所给的要排序的数中先随机抽出一个数(一般选择第一个数作为基数)。然后遍历输入的数(将每个数和抽出的数比较,比它小的放左边,比大它的放右边)~~~该过程的时间复杂度为n(第一步),然后递归的完成上述操作~~该递归的操作时间复杂度是logn(与遍历二叉树的操作类似)(第二步)~~~所以第一步和第二步合起来。最终快排的时间复杂度是nlogn(它是不稳定算法) 归并排序:从递归的角度来...原创 2019-06-02 23:25:15 · 6549 阅读 · 1 评论