数据结构与算法
文章平均质量分 88
伍华锋
这个作者很懒,什么都没留下…
展开
-
谈谈分布式系统的CAP理论
谈谈分布式系统的CAP理论转载 2023-02-21 19:06:23 · 410 阅读 · 0 评论 -
LeetCode刷题记录
20. 有效的括号23. 合并K个排序链表24. 两两交换链表中的节点25. K 个一组翻转链表45.跳跃游戏II55.跳跃游戏72.编辑距离78.子集82. 删除排序链表中的重复元素 II83. 删除排序链表中的重复元素86. 分隔链表92.翻转链表II97.交错字符串109. 有序链表转换二叉搜索树115.不同的子序列120. 三角形最小路径和(动态规划的典型例题...原创 2019-11-25 14:55:00 · 482 阅读 · 0 评论 -
平时遇见的算法题----(1)
文章目录121.买卖股票的最佳时机283.移动0121.买卖股票的最佳时机class Solution { public int maxProfit(int[] prices) { int minprice = Integer.MAX_VALUE; int maxprofit = 0; for (int i = 0; i < prices.leng...原创 2020-01-03 20:22:13 · 679 阅读 · 1 评论 -
平时遇见的算法题----(2)
文章目录LeetCode 347 .数组中出现次数最多的前K个数LeetCode 347 .数组中出现次数最多的前K个数注意:堆中比较的时候使用的是map取值进行比较的class Solution { public int[] topKFrequent(int[] nums, int k) { Map<Integer,Integer> map = new HashMap<>(); for(int num : nums){原创 2020-07-18 11:03:51 · 294 阅读 · 0 评论 -
一丶java中常见的排序算法总结
* @Author Mr.Wu * @Date 2019/6/23 11:30 * @Version 1.0 **/public class BubbleSort { public static void main(String[] args) { int[] arr ={3,9,-1,10,2}; bubbleSort(arr); ...原创 2019-07-05 09:18:58 · 622 阅读 · 1 评论 -
三丶链表相关题型
文章目录83. 删除排序链表中的重复元素82. 删除排序链表中的重复元素 II206.翻转链表83. 删除排序链表中的重复元素注意:标准的对于头节点非空的判定和处理方法class Solution { public ListNode deleteDuplicates(ListNode head) { if(head ==null ||head.next ==null){ ...原创 2019-11-21 11:44:44 · 254 阅读 · 0 评论 -
四丶矩阵和链表的打印
文章目录1.转圈打印矩阵2:旋转90度打印正方形矩阵3.z字形(之字形 )打印举证1.转圈打印矩阵给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如:1 2 3 45 6 7 89 10 11 1213 14 15 16打印结果为:1,2,3,4,8,12,16,15,14,13,9, 5,6,7,11, 10【要求】 额外空间复杂度为O(1)。思路;始终确定两个点。没...原创 2019-10-22 22:31:33 · 690 阅读 · 1 评论 -
五丶二叉树
文章目录二叉树的基本概念1.递归版本(先,中,后序)2.非递归版本(先、中、后序)先序遍历中序遍历后序遍历二叉树的序列与反序列化在二叉树中找到一个节点的后继结点。二叉树的基本概念实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式满二叉树:所有的叶节点全部在底层,并且在底层全部铺满的二叉树 完全二叉树:叶节点只能出现在最后两层,并且最底层的叶节点都向左对齐二叉搜索树:要求每个...原创 2019-10-30 22:28:21 · 840 阅读 · 1 评论 -
六丶搜索---(深度优先和宽度优先)
图的广度优先搜索(BFS)和深度优先搜索(DFS)算法解析,参考博文,点击这里133. 克隆图思路:第一步: 克隆点。 只需要用广度优先搜索的方法从根节点出发去遍历一遍图,并且同时克隆出每个点A 相应的克隆点A`保存在map里面,所以map里面存储每个点的对应克隆点。第二步: 克隆边。再用广度优先搜索的方法遍历一遍图,并且这个时候由于知道一个点A的相邻点点B, 而map里面存储了A...原创 2019-11-25 14:39:11 · 901 阅读 · 1 评论 -
七丶面试中的---数据结构
排序算法的稳定性冒泡,插入,归并可以。选择,快速,堆。不行原创 2019-10-21 14:55:54 · 252 阅读 · 0 评论 -
动态规划解题方法
文章目录1.核心:2.动态规划题目特点:3.动态规划的组成部分4.例题:例题1:例题2.例题3.存在型动态规划1.核心:动态规划算法的核心:就是记住已经解决过的子问题的解。—先计算子问题,再由子问题计算父问题动态规划应用的场景:1.最优子结构:一个问题的解结构包含其子问题的最优解。2.重叠子问题:在斐波拉契数列和钢条切割结构图中,可以看到大量的重叠子问题,比如说在求fib(6)的时候,f...原创 2019-09-25 22:31:58 · 2878 阅读 · 1 评论 -
动态规划二丶坐标型,序列型
文章目录1.坐标型动态规划:2.序列型动态规划:1.坐标型动态规划:public int uniquePathsWithObstacles(int[][] A){ int m = A.length; //表示行数 if(m==0){ return 0; } int n =A[0].length;//...原创 2019-09-29 17:20:02 · 411 阅读 · 0 评论 -
动态规划三丶----典型例题
文章目录55.跳跃游戏45.跳跃游戏II132.分割回文串II139.单词切分1143. 最长公共子序列1062.最长重复子串72.编辑距离115.不同的子序列97.交错字符串4.例题:120. 三角形最小路径和(动态规划的典型例题,需要注意)55.跳跃游戏这道题采用动态规划,可能会超时,但是任然需要掌握。class Solution { public boolean canJum...原创 2019-11-20 15:07:44 · 503 阅读 · 0 评论 -
智力题总结
1.设计抢红包的问题参考博文1参考博文2 //二倍均值法 public static List<Integer> divideRedPackage(Integer totalAmount, Integer totalPeopleNum) { List<Integer> amountList = new ArrayList<Integer>();原创 2020-07-13 16:27:50 · 179 阅读 · 0 评论 -
剑指Offer 相关题型
剑指 Offer 36. 二叉搜索树与双向链表LeetCode相关题解注意:1.dfs中的非空判断,是直接返回的。class Solution { Node pre, head; public Node treeToDoublyList(Node root) { if(root == null) return null; dfs(root); head.left = pre; pre.right = head;原创 2020-07-13 10:59:37 · 122 阅读 · 0 评论 -
剑指offer中部分题。
面试题 02.04. 分割链表class Solution { public ListNode partition(ListNode head, int x) { List<Integer> list = new ArrayList<>(); ListNode cur = head; ListNode dummy =...原创 2020-02-15 17:26:32 · 147 阅读 · 0 评论 -
LeetCode刷题(11-20)
11.盛最多水的容器思路:由于面积取决于边长短的那一端假设为m,所以要想得到比当前更大的面积,边长短的那一端必须舍弃,因为如果不舍弃,高最大就是m,而随着指针的移动宽会一直减小,因此面积只会越来越小。class Solution { public int maxArea(int[] height) { int maxArea=0,l=0,r=height.length-...原创 2019-12-11 11:44:42 · 211 阅读 · 0 评论 -
LeetCode刷题(21 - 30)
21.合并两个有序链表方法1:利用一个额外的链表class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(0); ListNode p1 = l1,p2 = l2; ListNode cu...原创 2019-12-13 10:44:05 · 312 阅读 · 0 评论 -
LeetCode刷题(40-50)
文章目录41. 缺失的第一个正数41. 缺失的第一个正数思路:让数组的第i个位置应该存放值i + 1本题是一道纯算法题,和数据结构无关,而且题目中的说明几乎把算法给限定死了。这个思路也很巧妙,对于一个正数number,我们将其放在数组nums中第number - 1个位置。具体的实现见JAVA代码,写几个注意点。(1)交换的过程不是一次完成的,而是一个循环过程。(2)终止循环的条件有以下...原创 2020-01-11 10:36:32 · 596 阅读 · 1 评论 -
LeetCode刷题(60-70)
64. 最小路径和class Solution { public int minPathSum(int[][] grid) { int m = grid.length; int n = grid[0].length; int[][] dp = new int[m][n]; dp[0][0] = grid[0][0]; ...原创 2020-02-04 17:17:50 · 142 阅读 · 0 评论 -
BlockingQueue(阻塞队列)相关内容分析
文章目录1. 前言2.看一下阻塞与非阻塞入队:出队:2.2 LinkedBlockingQueue 源码分析原理3.源码分析3.1 具体入队与出队的原理图:3.2、入队两个元素过后3.3、出队一个元素后put方法总结:E take()方法take方法总结:remove()方法提问:为什么remove()方法同时需要两把锁?LinkedBlockingQueue总结:4. ArrayBlocking...转载 2020-01-12 11:21:12 · 802 阅读 · 0 评论 -
面试经典实现LRU Cache
你遇到过这个题吗?实现一个LRU Cache。要求查询和插入都在O(1) 时间内完成。遇到过?很正常。没遇到?早晚会遇到。(鬼脸)这是LeetCode上一道十分经典的题目,也是非常火的面试题。原题:Design and implement a data structure for Least Recently Used (LRU) cache. It should support th...转载 2019-12-24 11:48:01 · 275 阅读 · 0 评论 -
中缀表达式转换为后缀表达式
具体步骤:首先将中缀表达式转换成对应的list,方便后面进行遍历: public static List<String> toInfixExpressionList(String s){ List<String> ls = new List<String>; String str; int i= 0; ...原创 2019-06-20 17:39:00 · 174 阅读 · 0 评论 -
递归的理解
递归:表达了两个意思:”递“+”归“。 这两个意思,有去(递去)有回(归来)。参考博文:https://blog.csdn.net/sinat_38052999/article/details/73303111递归的三要素:(1)明确递归终止条件;(2) 给出递归终止时的处理办法;(3) 提取重复的逻辑,缩小问题规模;package recusion;/** * @Descrip...原创 2019-06-22 16:12:20 · 162 阅读 · 0 评论 -
java中二维数组和稀疏数组之间的相互转换
* @Author Mr.Wu * @Date 2019/6/7 21:40 * @Version 1.0 **/public class shuzu01 { public static void main(String[] args) { int[][] chessArray = new int[11][11]; chessArray[1][2]=...原创 2019-07-09 17:01:33 · 155 阅读 · 0 评论 -
java实现哈希表
注意:由于哈希表是:数组+链表的构成方式。那么在构造函数中,不仅需要初始化数组,还要初始化链表。public class HashTabDemo { public static void main(String[] args) { //创建哈希表 HashTab hashTab = new HashTab(7); //写一个简单的菜单 String key = ...原创 2019-07-10 09:49:49 · 284 阅读 · 0 评论 -
java实现二叉树的前序,中序,后序遍历查找。
此时:需要把当前节点看做是它的子节点的父节点来进行理解;1.实现二叉树的前序,中序,后序遍历1.1首先实现每个节点的前,中,后序遍历//定义节点class HeroNode{ private int no; private String name; private HeroNode left; private HeroNode right; pu...原创 2019-07-10 14:57:05 · 482 阅读 · 0 评论 -
java实现哈夫曼树和哈夫曼编码
数的带权路径:所有的叶子结点的带权路径之后,记为WPL,权值越大的结点离根结点越近的二叉树才是最优二叉树。WPL最小的就是哈夫曼树需要注意的点:1.对于集合中数据进行排序,使用Collections.sort()方法进行排序。2.对于前序遍历的书写。 * @Author Mr.Wu * @Date 2019/7/21 10:44 * @Version 1.0 **/public cl...原创 2019-07-21 11:33:23 · 302 阅读 · 0 评论