
数据结构与算法
文章平均质量分 51
飞翔的乌龟
这个作者很懒,什么都没留下…
展开
-
LeetCode-面试题16.25 LRU缓存机制题解
运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前删除最.原创 2021-05-08 15:28:37 · 226 阅读 · 0 评论 -
LeeCode:856-括号的分数,使用栈实现
给定一个平衡括号字符串S,按下述规则计算该字符串的分数:() 得 1 分。AB 得A + B分,其中 A 和 B 是平衡括号字符串。(A) 得2 * A分,其中 A 是平衡括号字符串。示例 1:输入: "()"输出: 1示例 2:输入: "(())"输出: 2示例3:输入: "()()"输出: 2示例4:输入: "(()(()))"输出:...原创 2019-12-25 13:02:16 · 172 阅读 · 0 评论 -
LeetCode:739每日温度,Java实现
根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用0 来代替。例如,给定一个列表temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是[1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是[1, 30000]。每个气温的...原创 2019-12-24 17:25:14 · 245 阅读 · 0 评论 -
LeetCode:1021.删除最外层的括号,Java实现
有效括号字符串为空("")、"(" + A + ")"或A + B,其中A 和B都是有效的括号字符串,+代表字符串的连接。例如,"","()","(())()"和"(()(()))"都是有效的括号字符串。如果有效字符串S非空,且不存在将其拆分为S = A+B的方法,我们称其为原语(primitive),其中A 和B都是非空有效括号字符串。给出一个非空有效字...原创 2019-12-24 17:22:55 · 166 阅读 · 0 评论 -
Java实现最小栈,LeetCode:155
设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...原创 2019-12-23 18:25:41 · 156 阅读 · 0 评论 -
Java实现循环队列-易于理解
class CircularQueue{ private String[] items; private int n;//队列长度 private int head=0;//队首指针 private int tail=0;//队尾指针 public CircularQueue(int capacity){ items=new String...原创 2019-12-23 15:10:05 · 136 阅读 · 0 评论 -
Java实现反转双向链表
class ListNode { int val; ListNode next; ListNode prev; ListNode(int x) { val = x; }}class Solution { public ListNode reverseList(ListNode head){ ListNode p...原创 2019-12-22 21:40:30 · 356 阅读 · 0 评论 -
双链表删除倒数第k个节点
跟单链表的处理方式基本一样,将prev指针的重连即可,可以参考如下代码:class ListNode { int val; ListNode next; ListNode prev; ListNode(int x) { val = x; }}class Solution { public static ListNode r...原创 2019-12-22 20:51:31 · 123 阅读 · 0 评论 -
Java实现求链表中间节点,LeetCode:876
使用双指针,一快一慢指针进行遍历链表,例如:1,2,3,4,5,返回3。1,2,3,4,5,6,返回4,代码如下class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class Solution { public static ListNode...原创 2019-12-18 00:06:52 · 130 阅读 · 0 评论 -
Java实现删除链表中倒数第n个元素,LeetCode:19
方法1:class ListNode { int val; ListNode next; ListNode(int x) { val = x; } class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { //1.设置头结点 ListNode dum...原创 2019-12-17 23:56:08 · 195 阅读 · 0 评论 -
Java实现链表中环的实现,LeetCode:141
普通的Hash解法,执行时间长,使用hashSet判断节点是否出现两次,出现两次则证明有环的存在,见如下代码:/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = ...原创 2019-12-17 23:27:06 · 176 阅读 · 0 评论 -
Java实现单链表反转,LeetCode:206
class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class Solution { public ListNode reverseList(ListNode head) { if(head==null || head.next==...原创 2019-12-17 22:34:40 · 139 阅读 · 0 评论