
算法题
文章平均质量分 63
主要为力扣题解
zdfunk
保持理智,相信未来
展开
-
LRU总结
文章目录[146. LRU 缓存机制](https://leetcode-cn.com/problems/lru-cache/)ACM模式LRU 在 MySQL 中的应用LRU 在 Redis 中的应用面试官:来,手写一个线程安全并且可以设置过期时间的LRU缓存146. LRU 缓存机制力扣原题 class Node{ public int key; public int value; public Node next; public N原创 2021-08-29 13:58:25 · 456 阅读 · 0 评论 -
LC295. 数据流的中位数
295. 数据流的中位数中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。示例:addNum(1)addNum(2)findMedian() -> 1.5addNum(3)原创 2021-08-15 23:16:18 · 138 阅读 · 0 评论 -
字节算法题
public static void main(String[] args) { getBase64 getbase64 = new getBase64(); long i = Long.parseLong("100"); String str = getbase64.telToBase64(i); System.out.println( str); }}class getBase64{ public String t.原创 2021-08-14 03:32:57 · 317 阅读 · 0 评论 -
IP地址与int整数的转换
给你一个IP4的地址,请转成十进制整数 (2021-03 腾讯-PCG-前端)手撕算法: ip地址转整数 (2021-03 腾讯-TEG-后端)输入描述:输入 1 输入IP地址2 输入10进制型的IP地址输出描述:输出1 输出转换成10进制的IP地址2 输出转换后的IP地址示例1输入10.0.3.193167969729输出16777312110.3.3.193牛客地址例如,ip地址为10.0.3.193,把每段拆分成一个二进制形式组合起来为00001010.原创 2021-08-11 16:07:04 · 2980 阅读 · 0 评论 -
LC8. 字符串转换整数 (atoi)
8. 字符串转换整数 (atoi)class Solution { public int myAtoi(String s) { char[] chars = s.toCharArray(); int len = chars.length; //1.去空格 int index = 0; while (index < len && chars[index] == ' ') in原创 2021-08-11 15:49:32 · 202 阅读 · 0 评论 -
LC232. 用栈实现队列&LC155. 最小栈&LC225. 用队列实现栈
232. 用栈实现队列class MyQueue { Deque<Integer> inStack; Deque<Integer> outStack; public MyQueue() { inStack = new LinkedList<Integer>(); outStack = new LinkedList<Integer>(); } public void push(原创 2021-08-11 15:35:53 · 127 阅读 · 0 评论 -
LC4. 寻找两个正序数组的中位数
4. 寻找两个正序数组的中位数给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。这个题解的解法三public double findMedianSortedArrays(int[] nums1, int[] nums2) { int n = nums1.length; int m = nums2.length; int left = (n + m + 1) / 2; int right = (n原创 2021-08-11 15:19:49 · 219 阅读 · 0 评论 -
用 Rand7() 实现 Rand10()
方法一:拒绝采样我们可以用拒绝采样的方法实现 Rand10()。在拒绝采样中,如果生成的随机数满足要求,那么久返回该随机数,否则会不断生成直到一个满足要求的随机数为止。若我们调用两次 Rand7(),那么可以生成 [1, 49] 之间的随机整数,我们只用到其中的 40 个,用来实现 Rand10(),而拒绝剩下的 9 个数,如下图所示。class Solution extends SolBase { public int rand10() { int row, col, idx原创 2021-08-11 14:23:50 · 337 阅读 · 0 评论 -
排序算法总结
912. 排序数组大佬的题解:复习基础排序算法(Java)1 选择排序思路:每一轮选取未排定的部分中最小的部分交换到未排定部分的最开头,经过若干个步骤,就能排定整个数组。即:先选出最小的,再选出第 2 小的,以此类推。参考代码 1:import java.util.Arrays;public class Solution { // 选择排序:每一轮选择最小元素交换到未排定部分的开头 public int[] sortArray(int[] nums) { in原创 2021-08-11 11:45:11 · 355 阅读 · 0 评论 -
股票买卖问题系列
股票问题系列股票问题系列通解121. 买卖股票的最佳时机122. 买卖股票的最佳时机 II123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV309. 最佳买卖股票时机含冷冻期714. 买卖股票的最佳时机含手续费股票问题系列通解《股票问题系列通解》推荐阅读 @stormsunshine 编写的文章《股票问题系列通解(转载翻译)》;121. 买卖股票的最佳时机121. 买卖股票的最佳时机(只交易一次)给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支原创 2021-08-07 20:51:58 · 159 阅读 · 0 评论 -
n数之和系列算法题
n数之和系列算法题1. 两数之和15. 三数之和1. 两数之和1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0,原创 2021-08-07 16:16:27 · 312 阅读 · 0 评论 -
二叉树算法题
103. 二叉树的锯齿形层序遍历103. 二叉树的锯齿形层序遍历给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。BFS遍历class Solution { public List<List<Integer>> zigzagLevelOrder(TreeNode root) { List<List<Integer>> res=new ArrayList<原创 2021-08-07 14:19:04 · 219 阅读 · 0 评论 -
链表算法题
链表相关算法题206. 反转链表迭代法递归法92. 反转链表 II方法一:穿针引线方法二:一次遍历(头插法)25. K 个一组翻转链表拓展1:不足k个也要反转拓展2:从尾部开始计数,k个一组翻转160. 相交链表206. 反转链表206. 反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]迭代法class Solution { public ListNode reverseLi原创 2021-08-07 14:07:53 · 274 阅读 · 0 评论 -
牛客网OJ在线编程常见输入输出
牛客链接:Scannernext():只读取输入直到空格。它不能读两个由空格或符号隔开的单词。此外,next()在读取输入后将光标放在同一行中。(next()只读空格之前的数据,并且光标指向本行)nextLine():读取输入,包括单词之间的空格和除回车以外的所有符号(即。它读到行尾)。读取输入后,nextLine()将光标定位在下一行第一题题目描述计算a+b输入描述:输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。输出描述:输出a+b的结原创 2021-08-06 16:11:26 · 461 阅读 · 0 评论 -
字节面试的一道算法题
题目描述求数组中比左边元素都大同时比右边元素都小的元素,返回这些元素的索引要求时间复杂度 O(n)输入:[2, 3, 1, 8, 9, 20, 12]输出:3, 4解释:数组中 8, 9 满足题目要求,他们的索引分别是 3、4题目解析最简单的思路是:遍历数组,对于每个元素分别往前、往后遍历一下,看看是否它是否满足条件。这种解法时间不符合题目要求。通过分析可以得到,对于每个元素,如果它比左侧最大的值要大,同时比右侧最小的值要小,就满足条件。那如果有这样两个数组,left_max[i] 表原创 2021-08-06 10:51:04 · 226 阅读 · 0 评论 -
两个50亿url文件找出共同的url
两个50亿url文件找出共同的url给A,B两个文件,各存放50亿条URL,每条URL占用64个字节,内存限制为4G,找出A,B中相同的URL。方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为,这里漏写个了a1)中。这样每个小文件的大约为300M。遍历文件b,采取和a相同的方式将url分别存储到1000小文件中(记为)原创 2021-08-03 12:40:35 · 2132 阅读 · 0 评论