数据结构
文章平均质量分 94
Phoenix_tgd
这个作者很懒,什么都没留下…
展开
-
LeetCode刷题之树
Invert Binary Tree-Number226解题思路: 交换左右子树,将左子树和右子树看作“数”,那么该问题就跟交换两个数类似,只不过需要采用递归的方法来进行交换(非递归也可以)代码:/** * Definition for a binary tree node. * public class TreeNode { * int val; * ...原创 2020-03-09 22:39:02 · 210 阅读 · 0 评论 -
LeetCode刷题之队列
Design Circular Quene(设计一个循环队列)-Number622思路: 使用三个变量,head,tail,count表示队列的首元素位置,尾元素位置的下一位置,队列的个数。代码: class MyCircularQueue { private int[] nums; private int head = 0; pri...原创 2020-02-28 16:58:56 · 310 阅读 · 0 评论 -
LeetCode刷题之栈
Valid Parentheses(有效的括号)-Number20思路: 括号匹配题是栈的典型应用,因为只有三种类型的括号,我们将右括号作为键,左括号作为值,进行Hash存储,接着对括号表达式进行遍历,遇到左括号我们压入栈中,遇到右括号的时候,则判断该括号对应的左括号是否在栈顶,如果在,则弹出,匹配成功,接着遍历,直到遍历完表达式。否则返回false代码:class So...原创 2020-02-27 16:48:45 · 263 阅读 · 0 评论 -
LeetCode刷题之链表
Linked List Cycle(环形链表)-Number141思路: 利用快慢指针,快指针每次走两步,慢指针每次走一步,如果链表中存在环,那么快慢指针总会相遇代码: /** * Definition for singly-linked list. * class ListNode { * int val; * ListNode nex...原创 2020-02-26 21:57:25 · 285 阅读 · 0 评论 -
LeetCode刷题之数组
Three Sum(求三数之和)思路: 1:对数组进行排序 2:依次取出第i个数作为定值,并且不重复的选取,目的是为了将三数求和转化为两数求和 3:定义两个指针,左指针和右指针 4:将定值与左右指针指向的数相加,如果定值=左右指针,那么记录这三个数,如果大于定值,右指针向左移,小于定值,左指针向右移动代码: class Soluti...原创 2020-02-24 15:13:27 · 209 阅读 · 0 评论 -
KMP模式匹配算法
KMP模式匹配算法KMP算法可以说是一个很经典的模式匹配算法了,刚开始并没有看懂,多看几遍就好了。朴素模式匹配算法(KMP算法没提出来之前的常用的匹配算法)当我们在一篇文章中去搜索一个单词的时候,就是在文章中对这个单词进行定位操作。这种子串的定位操作通常称为串的模式匹配。是字符串中最重要的操作之一。模式匹配就是给定两个字符串O和F,长度分别为n和m,判断F是否在O中,如果出现则返回出现...原创 2018-11-29 17:14:50 · 8386 阅读 · 2 评论