自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 2020-12-20

力扣打卡题316传送门使用字典序就是最大程度上满足升序排序。算法思路:我们维护两个数组,一个用来记录每个字母出现的频率,一个用来记录返回的字符串中字符(保证每个字符只出现一次)。首先遍历字符串,将第一个字符放入目标字符串中,然后读取下一个,此时判断字符串是否为字典序,不是的话:判断这个字符下一个出现的位置。如此依次循环。public String removeDuplicateLetters(String s) { boolean[] vis = new boolean[26]

2020-12-20 20:18:12 114

原创 2020-12-12

跳表一、什么是跳表?二、跳表的时间复杂度?1.计算跳表的高度2.计算跳表的时间复杂度三、高效的动态插入和删除?四、跳表索引动态更新?对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率就会很低,时间复杂度会很高,是 O(n)。为了提高效率,我们建立索引。每两个结点提取一个结点到上一级,我们把抽出来的那一级叫做索引或索引层。你可以看我画的图。图中的 down 表示 down 指针,指向下一级结点。上述的数据量不大,所以即便加了两级索引

2020-12-12 15:05:03 265

原创 2020-12-01

力扣打卡题(二分法)力扣34题解题思路:1、使用二分法模板直接套用二分法标准模板public static int BinSearch(int[] nums, int target){ if(nums.length< 0) return -1; int right = nums.length; int left = 0; while(left <= right){ int mid = (right - left)/2 + left;//防止越界 if(nums[mi

2020-12-01 17:22:59 216 2

原创 2020-11-28

拓扑排序一、算法分析二、kanh算法三、DFS算法一、算法分析这个概念很好理解,我们先来看一个生活中的拓扑排序的例子。我们在穿衣服的时候都有一定的顺序,我们可以把这种顺序想成,衣服与衣服之间有一定的依赖关系。比如说,你必须先穿袜子才能穿鞋,先穿内裤才能穿秋裤。假设我们现在有八件衣服要穿,它们之间的两两依赖关系我们已经很清楚了,那如何安排一个穿衣序列,能够满足所有的两两之间的依赖关系?如果 a 先于 b 执行,也就是说 b 依赖于 a,那么就在顶点 a 和顶点 b 之间,构建一条从 a 指向 b 的边

2020-11-28 14:47:40 553

原创 2020-11-21

回溯算法一、八皇后问题二、0-1背包问题三、正则表达式问题回溯处理思想,有点类似枚举搜索。我们枚举所有的解,找到满足期望的解。为了有规律地枚举所有可能的解,避免遗漏和重复,我们把问题求解的过程分为多个阶段。每个阶段,我们都会面对一个岔路口,我们先随意选一条路走,当发现这条路走不通的时候(不符合期望的解),就回退到上一个岔路口,另选一种走法继续走。理论的东西还是过于抽象,老规矩,我还是举例说明一下。我举一个经典的回溯例子,我想你可能已经猜到了,那就是八皇后问题。一、八皇后问题我们有一个 8x8 的棋盘,

2020-11-21 15:12:43 98

原创 2020-11-13

数据结构之图的搜索算法图的表示广度优先算法(BFS)深度优先算法(DFS)图的表示图代表多对多的关系。图中的元素我们就叫做顶点(vertex)。从我画的图中可以看出来,图中的一个顶点可以与任意其他顶点建立连接关系。我们把这种建立的关系叫做边(edge)。图最直观的一种存储方法就是,邻接矩阵邻接矩阵的底层依赖一个二维数组。对于无向图来说,如果顶点 i 与顶点 j 之间有边,我们就将 A[i][j]和 A[j][i]标记为 1;对于有向图来说,如果顶点 i 到顶点 j 之间,有一条箭头从顶点 i 指向

2020-11-13 18:52:33 136

原创 2020-11-08

数据结构之堆排序堆一、往堆中插入一个元素二、堆中删除一个元素三、实现堆排序一、建堆二、排序堆堆是一种特殊的二叉树。满足下面两个条件就是一个堆:1、堆是一个完全二叉树(完全二叉树要求,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。)2、堆中每个节点的值都必须大于等于(或小于等于)其子数的每一个节点的值。(大于的称为大顶堆,小于的称为小顶堆。)上图1,2是大顶堆,3是小顶堆,4不是堆。一、往堆中插入一个元素往堆中插入一个元素,也必须满足堆的两个条件。完全二叉树比较适合用数组存

2020-11-08 19:08:06 217

原创 2020-11-04

力扣打卡题之合并区间力扣57思路:就是高中时期的区间的四种情况,将区间从左到右滑动。代码:class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { int left = newInterval[0]; int right = newInterval[1]; boolean placed = false; List<int

2020-11-04 10:41:37 97

原创 2020-11-02

力扣打卡题之两数组的交集力扣题349编写一个函数来求出来求出两个数组的交集。注意说明思路1:可以使用hashset的方法,创建hashSet集合,然后使用暴力法进行比对(由于给定的数组中有重复元素,而Java中HashSet的特点就是不允许存储重复元素)。代码:class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1 = new HashSe

2020-11-02 21:26:34 113

原创 2020-11-01

数据结构与算法之排序算法(三)一、桶排序二、计数排序三、基数排序一、桶排序算法思想:核心就是将要排序的数据划分到m个有序桶中,然后对每一个桶内的数据进行排序。桶内排序之后,再依次取出每个桶内的数据,组成的数据就是有序的。注意:1、要排序的数据很容易划分为m个桶2、数据在每个桶之间分布要是比较均匀的3、桶排序比较适合外部排序的java代码:public static void BucketSort(int[] a, int bucketSize){ if(a.length < 2

2020-11-01 17:21:51 153

原创 2020-10-29

数据结构与算法之排序算法(二)一、归并排序二、快速排序一、归并排序算法思路:简单来说,就是将一个数组左右分为两半,然后再次细分,逐渐分为两个元素。最后比较大小,然后进行合并。(一般使用递归方法)递推公式:merge_sort(p…r) = merge(merge_sort(p…q), merge_sort(q+1…r))终止条件:p >= r 不用再继续分解代码:public void MergeSort(int[] a, int n){ if(n <= 1) return;

2020-10-29 21:06:44 137

原创 2020-10-28

力扣打卡题力扣题库1207用map和Set实现: 1、map用于统计次数 2、set用于次数去重:class Solution { public boolean uniqueOccurrences(int[] arr) { Map<Integer, Integer> counts = new HashMap<>(); for (int value : arr) { counts.put(value, count

2020-10-28 20:41:19 84

原创 2020-10-28

数据结构与算法之排序算法(一)排序算法数据结构与算法之排序算法(一)一、冒泡排序二、插入排序三、选择排序一、冒泡排序算法基本思想:每次都选择一对数字排序,小的数字放前面,通过两个for循环,依次比较。类似于打擂台,每一个人都要与其他的人比较过之后,再进行排序。public void BubbleSort(int[] a, int n){ if(n <= 1)return; int temp = 0; for(int i = 0 ; i < n ; i++){ for(int

2020-10-28 19:44:07 107

原创 2020-10-26

数据结构之队列队列:相当于排队买票,先来的人先买,后来的人只能排队,而且还不准插队。先进先出(first in first out,FIFO)与栈相似,队列也只有两个类似的操作:入队(enqueue)和出队(dequeue)。入队:是从队尾(tail)取出去。出队:是从队头(head)取出去。Java中常用操作:// 用数组实现的队列public class ArrayQueue { // 数组:items,数组大小:n private String[] items; priva

2020-10-26 21:04:49 100

原创 2020-10-25

1024力扣打卡题(动态规划)解题思路:1、如果要覆盖所有区间,那么先从视频开始的 0 开始考虑2、找到所有包含 0 的片段,因为不会有比 0 小开始的片段,所以很好找3、假如有 [0,1] 和 [0,2] 两个片段,当然会选择 [0,2] 毕竟多了可以剪掉,少了就得多找一个片段了4、当选择了 [0,2] 为一个肯定要选的片段之后,接下来可以找 [1,x] 和 [2,x] 的片段5、同理,在所有的 [1,x] 和 [2,x] 片段中挑选覆盖更多的片段6、重复这个做法,直到影片结束class

2020-10-25 20:39:12 196

原创 2020-10-23

记录力扣刷题新手村-还是双指针加链表反转力扣题234请判断一个链表是否为回文链表方法一:双指针思路: 1、首先使用快慢指针,找到中间的节点 2、将后半段节点使用链表反转 3、判断是否为回文 4、返回结果java代码class Solution { public boolean isPalindrome(ListNode head) { if(head == null )//判断链表是否为空,空也是回文 return true;

2020-10-23 14:33:11 102

原创 2020-10-23

记录常用的一些数据结构之栈栈:是先进后出(FILO,first in last out)的线性表(stack),它要求只在表尾进行插入和删除。端口有栈顶(top),栈底(button)。栈的常用操作:进栈(push,压栈)和出栈(pop,弹栈)。c语言版:一、栈的定义typedef struct{ ElemType *base; ElemType *top; int StackSize;}spStack;二、创建一个栈#define STACK_INIT_SIZE 100void

2020-10-23 11:39:10 143

原创 2020-10-22

记录力扣刷题新手村-双指针题力扣题925本来想用哈希表来写的,后来发现字符串有顺序要求,哈希表只能查询字符个数是否正确。后来看到别人的题解,使用双指针。双指针具体用法思路:第一个字符串主要使用来匹配字符的。第二个字符串的两个作用:匹配name中字符以及重复字符。如果typed中有个字符都不满足,就直接返回false。Java代码class Solution { public boolean isLongPressedName(String name, String typed) {

2020-10-22 11:38:46 84

原创 2020-10-21

记录力扣刷题新手村-打卡题补上昨天的题力扣143:链表重排给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。方法一:使用链表的基本操作 解题思路: 1、使用快慢指针,得到两个链表 2、将后半部分的链表反转 3、将反转后的链表插入前半部分的链表缝隙java代码:`class Solution { public void reorderL

2020-10-21 10:59:23 166

原创 2020-10-19

记录力扣刷题新手村-打卡题力扣题-844给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。本题的思路是字符重组:一般使用数据结构中栈(先进后出) 首先将所有的字符压栈push() a、判断字符中是否有后退字符#(注意字符是否为空的情况) b、然后依次弹栈pop() c、最后比较栈中的元素是否相同方法一:双栈法(时间复杂度O(n))class Solution {

2020-10-19 16:47:41 110

原创 2020-10-18

记录力扣刷题新手村-数组题给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍实例:第一种方法(暴力法):时间复杂度为(O(n^2))代码如下:class Solution { public int[] twoSum(int[] nums, int target) { int[] a=new int[2]; f

2020-10-18 19:17:40 203 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除