第一天写博客,有点紧张~主要想记录自己平时刷的题、学到的知识点和思路心得。

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相关推荐

  1. 23届非科班选手秋招转码指南

    1.秋招情况介绍 1.1自我介绍 我是一名23届非科班转码选手,本硕均就读于某211院校机械专业,秋招共计拿下12份offer,包括大疆创新.海康威视.联发科技.理想汽车.中电28.阳光电源等各行业. ...

  2. 力扣 (LeetCode)-对称二叉树,树|刷题打卡

    Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 [已开启]任务一:刷题打卡 * 10 篇 哪吒人生信条:如果你所学的东西 处于喜欢 ...

  3. 2022-03-03每日刷题打卡

    2022-03-03每日刷题打卡 力扣--每日一题 258. 各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数.返回这个结果. 示例 1: 输入: num = 38 输出 ...

  4. 2022-04-14每日刷题打卡

    2022-04-14每日刷题打卡 代码源--每日一题 上帝的集合 - 题目 - Daimayuan Online Judge 题目描述 现在上帝有一个空集合,现在他命令你为他执行下列三种操作 n 次, ...

  5. 2022-04-01每日刷题打卡

    2022-04-01每日刷题打卡 代码源--每日一题 Lusir的游戏 - 题目 - Daimayuan Online Judge Lusir 正在玩一个古老的基于 DOS 的游戏. 游戏中有 N+1 ...

  6. 2021-12-11每日刷题打卡

    2021-12-11每日刷题打卡 力扣--剑指offer 剑指 Offer 40. 最小的k个数 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字, ...

  7. 2022-03-10每日刷题打卡

    2022-03-10每日刷题打卡 力扣--每日一题 589. N 叉树的前序遍历 给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 . n 叉树 在输入中按层序遍历进行序列化表示,每 ...

  8. 第一届LeetCode刷题打卡赢现金活动开始啦,助力每一位想拿大厂offer的小伙伴!

    大家好,我是路飞!第一届leetcode(剑指Offer.LeetCode Top100)刷题打卡活动即将开始啦 (助力大厂Offer收割机)~ 活动形式: LeetCode刷题在自己的CSDN博客上 ...

  9. 2022-03-02每日刷题打卡

    2022-03-02每日刷题打卡 代码源--div2每日一题 Alice的德州扑克 - 题目 - Daimayuan Online Judge 德州扑克是目前世界上最流行的扑克游戏,全世界有众多相关的 ...

最新文章

  1. Lint found fatal errors while assembling a release target.
  2. HTML 框架 frameset,frame
  3. 《乔布斯传》读后感---成功的启示
  4. Xen的内存布局及其启动
  5. Log4j输出格式控制--log4j的PatternLayout参数含义
  6. JavaWeb学习总结(二):Tomcat服务器学习和使用(一)
  7. Mybatis根据IdType生成不同类型的主键id
  8. 服务高可用利器——限流算法介绍与示例
  9. 修改鼠标指针的样式,让鼠标变成动态个性化图标,让你的鼠标图标更炫酷起来。
  10. SpringCloud Alibaba(四) Nacos服务端本地启动和源码浅析(AP架构),Distro协议介绍,CAP原则介绍
  11. 基于Fuzzy Logic的人群疏散模型(考虑攻击者的情况)
  12. AR VR MR 到底有啥区别?
  13. 学计算机的女生选择公务员还是考研,考公务员难还是考研难 女生考研还是考公务员...
  14. 聚观早报 | 网传每日优鲜「就地解散」;支付宝一键取消自动扣款
  15. OpenHarmony(鸿蒙)操作系统
  16. Canvas 文字对齐方式
  17. 阿里云HaaS100物联网开发板学习笔记(四)轻应用初步--用javascript连接阿里云物联网平台
  18. 广州男子花12万买新车 保养时被告知车门被撬开维修过
  19. 线段树优化建图详解——区间连边之技巧,吊打紫题之利器
  20. mysql 1100_错误代码:1100 Table 't_depart_info' was not locked with LOCK TABLES的解决方法

热门文章

  1. 癸高血糖素——碳水化合物代谢的重要激素
  2. NOI题库答案 (1.7 字符串基础)(1-20)
  3. STM32如何解除自锁
  4. Lytro 光场相机重对焦C++实现以及CUDA实现
  5. 员工如何应对工作中的挫败感
  6. 云上办公兴起,华为云桌面Workspace更靠谱
  7. 登录IE时常出现闪退:Internet Explorert停止工作解决办法
  8. Android Studio报错 “java.lang.IllegalStateException: Room cannot verify the data integrity” 解决方法
  9. 浅谈oracle复合数据类型
  10. 多功能PDF工具合集:PDF Squeezer - PDF Toolbox Mac