非科班选手的刷题打卡记录Day1
第一天写博客,有点紧张~主要想记录自己平时刷的题、学到的知识点和思路心得。
1. 每日一题
386. 字典序排数
难度中等352
给你一个整数 n
,按字典序返回范围 [1, n]
内所有整数。
你必须设计一个时间复杂度为 O(n)
且使用 O(1)
额外空间的算法。
示例 1:
输入:n = 13 输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]
示例 2:
输入:n = 2 输出:[1,2]
提示:
1 <= n <= 5 * 104
class Solution {
public:
vector<int> lexicalOrder(int n) {
vector<int> ret(n);//返回值不计入空间复杂度
int temp = 1;//ret[i],初始值为1
for(int i = 0; i < n; i++){
ret[i] = temp;
if(temp * 10 <= n){//如果不越界,先在下一位加个0
temp *= 10;
}
else{
if(temp >= n){//越界,说明末位搜索完毕
temp /= 10;//回到上一位
}
temp++;
while(temp % 10 == 0){//末位为0//e.g.199->2
temp /= 10;
}
}
}
return ret;
}
};
遍历1-n的每个数,在不超过n的情况下先在当前数后面加个0作为下一个数,然后依次+1直到>=n,说明最后一位已经搜索完毕,/10回到上一位,+1直到末位为0再返回上一位。
2.两数之和
剑指 Offer 57. 和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。
示例 1:
输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2]
示例 2:
输入:nums = [10,26,30,31,47,60], target = 40 输出:[10,30] 或者 [30,10]
限制:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^6
咱一看这不是梦开始的地方吗!当时我还是一个连哈希都不懂的小白。立刻重拳出击一下:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
unordered_set<int> numSet;
for(int num : nums){
if(numSet.count(target - num)){
return {num,target - num};
}
numSet.insert(num);
}
return {};
}
};
再看这题是排序数组,因此双指针效率更高:(时间复杂度O(N),空间复杂度O(1))再次重拳出击:
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
int left = 0, right = nums.size() - 1;
while(left < right){
if(nums[left] + nums[right] == target){
return {nums[left],nums[right]};
}
if(nums[left] + nums[right] > target){
right--;
}
else{
left++;
}
}
return {};
}
};
3.
剑指 Offer 57 - II. 和为s的连续正数序列
输入一个正整数 target
,输出所有和为 target
的连续正整数序列(至少含有两个数)。
序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。
示例 1:
输入:target = 9 输出:[[2,3,4],[4,5]]
示例 2:
输入:target = 15 输出:[[1,2,3,4,5],[4,5,6],[7,8]]
限制:
1 <= target <= 10^5
一开始没看到连续,上来就是一个回溯...
看到标签有双指针,想到可以用两个变量表示当前的起点和终点,初始为1,如果当前序列的和还不到给定值,继续向右移动终点,如果超过给定值则向右移动起点,如果和给定值相等则记录当前的序列。
class Solution {
public:
vector<vector<int>> findContinuousSequence(int target) {
if(target == 1) return {{1}};
vector<vector<int>> ret;
int left = 1,right = 1;//序列的起点和终点
int sum = 0;
while(left <= target / 2){//起点只可能在前一半数
if(sum < target){//不到目标值,说明该起点还未搜索完,后移终点
sum += right;
right++;
}
else if(sum > target){//超过目标值,说明该起点已搜索完,应该向后移起点
sum -= left;
left++;
}
else if(sum == target){
vector<int> temp;
for(int i = left; i < right; i++){
temp.push_back(i);
}
ret.push_back(temp);
sum -= left;
left++;
}
}
return ret;
}
};
总结:今天大部分时间用于给带的本科生学弟写代码..头秃,明天继续,还差得远呢TT
非科班选手的刷题打卡记录Day1相关推荐
- 23届非科班选手秋招转码指南
1.秋招情况介绍 1.1自我介绍 我是一名23届非科班转码选手,本硕均就读于某211院校机械专业,秋招共计拿下12份offer,包括大疆创新.海康威视.联发科技.理想汽车.中电28.阳光电源等各行业. ...
- 力扣 (LeetCode)-对称二叉树,树|刷题打卡
Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 [已开启]任务一:刷题打卡 * 10 篇 哪吒人生信条:如果你所学的东西 处于喜欢 ...
- 2022-03-03每日刷题打卡
2022-03-03每日刷题打卡 力扣--每日一题 258. 各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数.返回这个结果. 示例 1: 输入: num = 38 输出 ...
- 2022-04-14每日刷题打卡
2022-04-14每日刷题打卡 代码源--每日一题 上帝的集合 - 题目 - Daimayuan Online Judge 题目描述 现在上帝有一个空集合,现在他命令你为他执行下列三种操作 n 次, ...
- 2022-04-01每日刷题打卡
2022-04-01每日刷题打卡 代码源--每日一题 Lusir的游戏 - 题目 - Daimayuan Online Judge Lusir 正在玩一个古老的基于 DOS 的游戏. 游戏中有 N+1 ...
- 2021-12-11每日刷题打卡
2021-12-11每日刷题打卡 力扣--剑指offer 剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字, ...
- 2022-03-10每日刷题打卡
2022-03-10每日刷题打卡 力扣--每日一题 589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每 ...
- 第一届LeetCode刷题打卡赢现金活动开始啦,助力每一位想拿大厂offer的小伙伴!
大家好,我是路飞!第一届leetcode(剑指Offer.LeetCode Top100)刷题打卡活动即将开始啦 (助力大厂Offer收割机)~ 活动形式: LeetCode刷题在自己的CSDN博客上 ...
- 2022-03-02每日刷题打卡
2022-03-02每日刷题打卡 代码源--div2每日一题 Alice的德州扑克 - 题目 - Daimayuan Online Judge 德州扑克是目前世界上最流行的扑克游戏,全世界有众多相关的 ...
最新文章
- Lint found fatal errors while assembling a release target.
- HTML 框架 frameset,frame
- 《乔布斯传》读后感---成功的启示
- Xen的内存布局及其启动
- Log4j输出格式控制--log4j的PatternLayout参数含义
- JavaWeb学习总结(二):Tomcat服务器学习和使用(一)
- Mybatis根据IdType生成不同类型的主键id
- 服务高可用利器——限流算法介绍与示例
- 修改鼠标指针的样式,让鼠标变成动态个性化图标,让你的鼠标图标更炫酷起来。
- SpringCloud Alibaba(四) Nacos服务端本地启动和源码浅析(AP架构),Distro协议介绍,CAP原则介绍
- 基于Fuzzy Logic的人群疏散模型(考虑攻击者的情况)
- AR VR MR 到底有啥区别?
- 学计算机的女生选择公务员还是考研,考公务员难还是考研难 女生考研还是考公务员...
- 聚观早报 | 网传每日优鲜「就地解散」;支付宝一键取消自动扣款
- OpenHarmony(鸿蒙)操作系统
- Canvas 文字对齐方式
- 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台
- 广州男子花12万买新车 保养时被告知车门被撬开维修过
- 线段树优化建图详解——区间连边之技巧,吊打紫题之利器
- mysql 1100_错误代码:1100 Table 't_depart_info' was not locked with LOCK TABLES的解决方法
热门文章
- 癸高血糖素——碳水化合物代谢的重要激素
- NOI题库答案 (1.7 字符串基础)(1-20)
- STM32如何解除自锁
- Lytro 光场相机重对焦C++实现以及CUDA实现
- 员工如何应对工作中的挫败感
- 云上办公兴起,华为云桌面Workspace更靠谱
- 登录IE时常出现闪退:Internet Explorert停止工作解决办法
- Android Studio报错 “java.lang.IllegalStateException: Room cannot verify the data integrity” 解决方法
- 浅谈oracle复合数据类型
- 多功能PDF工具合集:PDF Squeezer - PDF Toolbox Mac