【2021.3】 LeetCode每日一题复盘
March 1st - March 7th
Average of Levels in Binary Tree
题目大意:
有一棵二叉树,返回二叉树每一层节点值的平均值的列表。
思路:
很自然的想到了二叉树的层序遍历。为了得到每一层节点值的平均值,要先得到节点个数和该层节点值的总和。当前层的节点个数就是一开始队列中节点的个数,内部再加一层循环,表示对当前层的遍历。
代码链接:
637.average-of-levels-in-binary-tree.java
Short Encoding of Words
题目大意:
有一个字符串数组,数组每个字符串是个单词,将这些单词重编码为一个新的字符串。编码后,每个单词都是新字符串的子串且都以#结尾,求满足要求的新字符串的最短长度。
思路:
将单词用Set存储,遍历每个单词,从Set中移除单词的所有子串。
然后遍历Set,求出最短长度。
代码链接:
820.short-encoding-of-words.java
Design HashMap
代码链接:
706.design-hash-map.java
March 8th - March 14th
Add One Row to Tree
思路:
逐层下降,当d为2时,进行插入层操作,当d大于2时,递归遍历左右子树节点,d减1。
代码链接:
623.add-one-row-to-tree.java
Integer to Roman
- 整数范围限制在[1,3999],因此用数组表示出千百十个位上相应的表示,然后依次取出整数各个数位的罗马数字表示,按千百十个从左到右拼接起来。
- 注意每一位上4和9的表示略有不同。不使用数组,可以用当前数字去循环减一个基数,每减一次就拼接一个罗马字符串,基数按照10,9,4,1递减。
代码链接:
12.integer-to-roman.java
Coin Change
题目大意:
给出硬币面值数组和指定金额,用尽可能少的硬币数量兑换指定金额。假设每种面值的硬币有无数多。
- amounts[i]为外层循环, coins[j]为内层循环
i>=coins[j]时的动态规划方程:
amounts[i] = amounts[i]==-1 ? amounts[i-coins[j]]+1 : Math.min(amounts[i], amounts[i-coins[j]]+1); - coins[i]为外层循环, arr[j]为内层循环
arr[j] = Math.min(arr[j],arr[j-coins[i]] + 1);
Check If a String Contains All Binary Codes of Size K
题目大意:
检查一个字符串是否包含所有长度为K的二进制编码。比如K=2, 00110 包含所有长度为2的二进制编码(00,01,10,11)。
代码链接:
1461.check-if-a-string-contains-all-binary-codes-of-size-k.java
Swapping Nodes in a Linked List
思路:
先遍历到正序第K个节点,然后记录头节点指针p1,第K个节点指针p2,继续同时移动p2和p1,当p2指向最后一个节点时,p1指向的就是逆序第K个节点。
代码链接:
1721.swapping-nodes-in-a-linked-list.java
March 15th - March 21st
Encode and Decode TinyURL
题目大意:
编码和解码URL,即可以对URL按照一定格式编码,也可以根据编码后的字符串得到原始URL。
思路:
使用HashMap存储编码和原始URL的映射关系。编码可由URL生成其唯一标识,一种解法是随机生成UUID,重复概率小。
代码链接:
535.encode-and-decode-tiny-url.java
Best Time to Buy and Sell Stock with Transaction Fee
题目大意:
买卖股票使得收益最大,不能同时进行多个交易,先出售股票才能再购买。
代码链接:
714.best-time-to-buy-and-sell-stock-with-transaction-fee.java
Generate Random Point in a Circle
题目大意:
给出圆心坐标和圆半径,随机返回一个圆内点的坐标。
思路:
圆心(x0,y0),半径r,则圆内点坐标范围(x0±r, y0±r)。在圆内还需满足条件:到圆心距离小于等于r。
提示知识点:
数学。Math.random()生成范围为(0,1)的double数,那么要生成范围
(-r, r),则为(Math.random()*2 - 1) * r。
代码链接:
478.generate-random-point-in-a-circle.java
Wiggle Subsequence
代码链接:
376.wiggle-subsequence.java
Keys and Rooms
题目大意:
每个房间有若干进入其他房间的钥匙,问能否从房间0开始,进入每个房间?
Design Underground System
题目大意:
设计一个地铁系统。这个系统支持的功能:追踪乘客(ID)进站/出站的时刻。计算两站之间所有乘客花费时间的平均值。
代码链接:
1396.design-underground-system.java
Reordered Power of 2
思路:
我们将这个数和2的幂的分别转为字符数组,排序然后转为新的两个字符串。若两字符串相同则能,不相同则不能。
整数范围为(0,10^9),因此最多比较到2的30幂次即可。
代码链接:
869.reordered-power-of-2.java
March 22nd - March 28th
Vowel Spellchecker
提示知识点:
HashMap 的putIfAbsent()和containsKey()
代码链接:
966.vowel-spellchecker.java
3Sum With Multiplicity
题目大意:
数组中 i, j, k 满足 i < j < k且 arr[i] + arr[j] + arr[k] == target的组合个数。
思路:
3sum问题的变式,遵循3sum问题的双指针法,先对数组排序,小于target移动左指针,大于target移动右指针。
代码链接:
923.3-sum-with-multiplicity.java
Advantage Shuffle
题目大意:
优势翻转,翻转数组A,使得最多的下标i满足A[i] > B[i]。
代码链接:
870.advantage-shuffle.java
Pacific Atlantic Water Flow
题目大意:
求大陆上水流既能流向太平洋又能流向大西洋的单元坐标。水流可沿四个方向,从高位置向低位置流动。太平洋在陆地左上边界,大西洋在右下边界。
代码链接:
417.pacific-atlantic-water-flow.java
Word Subsets
Palindromic Substrings
代码链接:
647.palindromic-substrings.java
Reconstruct Original Digits from English
代码链接:
423.reconstruct-original-digits-from-english.java
March 29th - March 31st
Flip Binary Tree To Match Preorder Traversal
代码链接:
971.flip-binary-tree-to-match-preorder-traversal.java
Russian Doll Envelopes
代码链接:
354.russian-doll-envelopes.java
Stamping The Sequence
代码链接:
936.stamping-the-sequence.java
【2021.3】 LeetCode每日一题复盘相关推荐
- 【2021-4】LeetCode每日一题复盘
四月终于得到全勤徽章了,第一枚徽章-- 坚持就是胜利 Week 1: April 1st - April 7th Palindrome Linked List 题目大意: 判断一个链表是否是回文链表 ...
- LeetCode每日一题之排列硬币
前言: 大家好,今天是LeetCode每日一题的第十天,,给大家分享的是排列硬币,难度系数两颗星!废话不多说,先上题目! 1.1 题目要求 题目类型:排列硬币 题目内容: 总共有n枚硬币,将它们摆成一 ...
- leetcode每日刷题计划-简单篇day8
leetcode每日刷题计划-简单篇day8 今天是纠结要不要新买手机的一天QAQ想了想还是算了吧,等自己赚钱买,加油 Num 70 爬楼梯 Climbing Stairs class Solutio ...
- Leetcode每日一题:171.excel-sheet-column-number(Excel表列序号)
思路:就是168题的反命题,进制的方式完美解决: Leetcode每日一题:168.excel-sheet-column-title(Excel表名称) class Solution {public: ...
- 【LeetCode每日一题】1723. 完成所有工作的最短时间
[LeetCode每日一题]1723. 完成所有工作的最短时间 [1] 1723. 完成所有工作的最短时间 [2] 473. 火柴拼正方形 [1] 1723. 完成所有工作的最短时间 题目: 给你一个 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色
LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...
- 【LeetCode每日一题】——109.有序链表转换二叉搜索树
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...
- leetcode每日一题·救生艇问题(Python)
leetcode每日一题·救生艇问题(Python) 问题描述 题目入口 题目思路 首先分析问题,一个船最多坐两人,因此我们可以把这个问题看作两两组合的问题,并且如果最重的那个人和最轻的人加起来大于l ...
最新文章
- Oracle For Linux安装脚本
- vrish 删除虚机_使用Kvm命令集管理虚拟机
- Java中的classpath
- 图论--一般图带花树匹配--模板
- Java——n个数的全排列
- cat命令详解_好程序员Python培训之详解eval好与坏
- Javaweb经典三层架构的演变
- 三维数据平滑处理_关于CAD三维对象建模
- chromium 一些设置 --插件安装
- Flutter之EdgeInsetsGeometry简析
- 在WebClient类中保持Session
- python利用pyhive 连接hive
- echarts柱状图实现重叠
- Procdump+Mimikatz获取Windows明文密码
- Android:给图片加边框
- 小米路由修改服务器密码,192.168.31.1小米路由器修改WIFI密码
- Java获取今天 开始和结束时间
- 将Jetson XavierNX的Ubuntu系统迁移至到nvme固态硬盘上
- 使用负载均衡技术建设高负载的网络站点(经典文章)
- 基于实例分割方法的端到端车道线检测 论文+代码解读
热门文章
- android studio报错Error:Project with path 'XXXX' could not be found解决办法
- TI CC32XX SDA中SimpleLink Academy教程翻译(RTOS部分的基础介绍非常易懂)
- linux账号安全管理,保证Linux系统安全——帐号管理
- vscode的搜索技巧
- 奥迪坚助力富友集团搭建 “收件宝”客服系统平台
- 洛谷 P1536 村村通
- HIT-CSAPP大作业:程序人生-Hello’s P2P
- ”linux学习之路” (感觉写的很好,更像是网络编程学习路线图)
- java课后习题答案_《java课后习题答案》.doc
- Julia:如何调用其他sub文件中的函数