算法
《剑指offer》和《编程之美》的算法题的思路和代码
questions?
Hold on
展开
-
面试高频——手写LRU缓存
思路图片先理解说明head的next节点就是链表的最后一个(我们把链表最右边当成第一个),它就是最近最久未使用的数据tail的prev节点就是链表的第一个,它代表最新最火热的数据每次get一个元素,就把它放到链表第一个去,这张图如果get1,那么相当于1放到3前面去,链表从左到右就是2,3,1,了,1成为了最新最火热的数据,如下图每次put一个元素的时候,需要检查容量是否还够,如果不够就需要删除head的next节点,因为它是最近最久未使用的数据注意下面代码结合.原创 2021-03-21 15:16:57 · 135 阅读 · 0 评论 -
深度拷贝带随即指针的链表
解法一(HashMap)/*// Definition for a Node.class Node { int val; Node next; Node random; public Node(int val) { this.val = val; this.next = null; this.random = null; }}*/class Solution { public Node copy.原创 2021-03-21 10:40:12 · 105 阅读 · 0 评论 -
剑指offer第三章刷题
前言:代码质量包括规范性(布局清晰,命名合理,手写能认出来),代码的完整性(功能测试,边界测试,负面测试)文章目录1.数值的整次方2.打印从1到最大的n位数1.数值的整次方题目描述实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入:原创 2020-08-03 17:13:15 · 607 阅读 · 0 评论 -
剑指offer刷题第二章
文章目录1.数组中重复的数字2.不修改数组找出重复的数字1.数组中重复的数字题目描述在一个数组长度为n的数组里,所有数字都在 0 ~ n-1 范围内,数组中某些数字是重复的,但不知道几个数字重复了,也不知道每个数字重复了多少次,请输出数组中任意重复的数字。三种解法(1)将数组排序后扫描一遍即可,给一个长度为n的数组排序时间复杂度最好为O(nlogn),这里就不上代码了。(逼格最低)(2)利用哈希表(空间换时间的思想)思路:建立a(用于输入数据)的数组的同时建立一个b(用于记录是否有重复数字)的原创 2020-07-23 11:47:35 · 700 阅读 · 0 评论