leetcode(66-70)

leetcode刷题(66-70) 算法是码农的基本功,也是各个大厂必考察的重点,让我们一起坚持写题吧。遇事不决,可问春风,春风不语,即是本心。我们在我们能力范围内,做好我们该做的事,然后相信一切都事最好的安排就可以啦,慢慢来,会很快,向前走,别回头。 阅读详情

66. 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。

你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:

输入: [1,2,3]
输出: [1,2,4]
解释: 输入数组表示数字 123。

示例 2:

输入: [4,3,2,1]
输出: [4,3,2,2]
解释: 输入数组表示数字 4321。
class Solution {
public:
    vector<int> plusOne(vector<int>& digits) {
        int tmp = digits[digits.size()-1]+1;
        int plus = tmp/10;
        digits[digits.size()-1]=tmp%10;
        for(int i=digits.size()-2; i>=0; i--){
            tmp = digits[i]+plus;
            plus = tmp/10;
            digits[i]=tmp%10;
        }
        if(plus == 0) return digits;
        else{
            vector<int> res;
            res.push_back(plus);
            for(int i=0; i<digits.size(); i++){
                res.push_back(digits[i]);
            }
            return res;
        }
    }
};

67. 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。

输入为非空字符串且只包含数字 1 和 0。

示例 1:

输入: a = "11", b = "1"
输出: "100"

示例 2:

输入: a = "1010", b = "1011"
输出: "10101"
class Solution {
public:
    string addBinary(string a, string b) {
        string res;
        int tmp=0,floor=0;
        for(int i=a.length()-1,j=b.length()-1; i>=0 || j>=0; i--,j--){
            int tmpi = i<a.length()? a[i]-'0':0;
            int tmpj = j<b.length()? b[j]-'0':0;
            tmp = (tmpi+tmpj+floor)%2;
            floor = (tmpi+tmpj+floor)/2;
            res.insert(res.begin(), tmp+'0');
        }
        if(floor!=0) res.insert(res.begin(),floor+'0');
        return res;
    }
};

68. 文本左右对齐

给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。

你应该使用“贪心算法”来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ' ' 填充,使得每行恰好有 maxWidth 个字符。

要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数。

文本的最后一行应为左对齐,且单词之间不插入额外的空格。

说明:

  • 单词是指由非空格字符组成的字符序列。
  • 每个单词的长度大于 0,小于等于 maxWidth。
  • 输入单词数组 words 至少包含一个单词。

示例:

输入:
words = ["This", "is", "an", "example", "of", "text", "justification."]
maxWidth = 16
输出:
[
   "This    is    an",
   "example  of text",
   "justification.  "
]

示例 2:

输入:
words = ["What","must","be","acknowledgment","shall","be"]
maxWidth = 16
输出:
[
  "What   must   be",
  "acknowledgment  ",
  "shall be        "
]
解释: 注意最后一行的格式应为 "shall be    " 而不是 "shall     be",
     因为最后一行应为左对齐,而不是左右两端对齐。       
     第二行同样为左对齐,这是因为这行只包含一个单词。

示例 3:

输入:
words = ["Science","is","what","we","understand","well","enough","to","explain",
         "to","a","computer.","Art","is","everything","else","we","do"]
maxWidth = 20
输出:
[
  "Science  is  what we",
  "understand      well",
  "enough to explain to",
  "a  computer.  Art is",
  "everything  else  we",
  "do                  "
]
class Solution {
public:
    vector<string> fullJustify(vector<string> &words, int L) {
        vector<string> res;
        int i = 0;
        while (i < words.size()) {
            int j = i, len = 0;
            while (j < words.size() && len + words[j].size() + j - i <= L) {
                len += words[j++].size();
            }
            string out;
            int space = L - len;
            for (int k = i; k < j; ++k) {
                out += words[k];
                if (space > 0) {
                    int tmp;
                    if (j == words.size()) { 
                        if (j - k == 1) tmp = space;
                        else tmp = 1;
                    } else {
                        if (j - k - 1 > 0) {
                            if (space % (j - k - 1) == 0) tmp = space / (j - k - 1);
                            else tmp = space / (j - k - 1) + 1;
                        } else tmp = space;
                    }
                    out.append(tmp, ' ');
                    space -= tmp;
                }
            }
            res.push_back(out);
            i = j;
        }
        return res;
    }
};

69. x 的平方根

实现 int sqrt(int x) 函数。

计算并返回 x 的平方根,其中 x 是非负整数。

由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。

示例 1:

输入: 4
输出: 2

示例 2:

输入: 8
输出: 2
说明: 8 的平方根是 2.82842..., 
     由于返回类型是整数,小数部分将被舍去。
class Solution {
public:
    int mySqrt(int x) {
        long long int i=2,j=1,flag=0; 
        if(x==0) return 0;
        while(true){
            if(i*i<x){
                if(!flag){
                    j=i;
                    i*=i;
                } else i++;
            } 
            if(i*i>x && !flag){
                i=j;
                flag=1;
            }
            if(i*i<x && (i+1)*(i+1)>x) return i;
            if(i*i==x) return i;
        }
    }
};

70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
1.  1 阶 + 1 阶
2.  2 阶

示例 2:

输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
1.  1 阶 + 1 阶 + 1 阶
2.  1 阶 + 2 阶
3.  2 阶 + 1 阶
class Solution {
public:
    int climbStairs(int n) {
        if(n==1) return 1;
        if(n==2) return 2;
        int fir=1,sec=2,res=0;
        for(int i=3; i<=n; i++){
            res=fir+sec;
            fir=sec;
            sec=res;
        }
        return res;
    }
};

(以上题目均摘自leetcode)

LeetCode+ 66 - 70 高精度、二分专题 给我们一个整数,这个整数是用一个数组来表示的,在这个整数的基础上加 1,加 1 之后还是用数组来表示,数组的最高位放到第 0 个位置,次高位放到第 1 个位置,假设这个数组是没有前导 0,其实就是给了一个很长的整数,模拟加法的过程由于最高位可能会进位,所以需要先把数组翻转,要让个位在第 0 个位置,十位在第 1 个位置,从个位开始做,每次计算当前这一位的值是多少,看一下有没有进位,如果有进位就进一位每一次当前位置上的数应该怎么计算呢?个位上应该是原来位置上的数加上 1,再加上进位,加上 1 可以看成是前面进 阅读详情

相关推荐

手把手教你用Multisim搭建FM直接调频电路(附完整波形分析)

本文通过Multisim仿真软件,手把手教你搭建FM直接调频电路。详细介绍了从核心概念理解、压控振荡器(VCO)参数设置、电路搭建与波形观测,到带通滤波器设计与信号优化的完整流程。通过对比滤波前后的时域波形与频谱分析,帮助读者直观理解频率调制原理,并提供了常见问题的排查思路与参数调试方法,将抽象的通信理论转化为可操作的实践技能。

weixin_29230773的博客 214

leetcode:70. 爬楼梯

动态规划

OceanStar的博客 3701

4.2 结构翻模

结构翻模功能可以将DWG文件中的二维图线对象:轴网、墙、柱、梁、基础、房间和面积等快速转换成Revit模型对象,翻模速度快,准确率高。与先前的模盒翻模功能不同,结构翻模不再需要在AutoCAD中提取模型的图线,所有操作在Revit均可完成。(1)翻模程序适用于钢筋混凝土结构的平法DWG文件。(2)将平法中所表示的轴网线,轴网文字,结构柱,梁,结构墙在Revit 中重新建出来。(3) 模盒可以翻出连...

fishbuaa的专栏 1796

Leetcode第70题: 爬楼梯

思考到爬楼梯的规律其实就是符合斐波那契数列(Fibonacci Sequence) 规律的,问题就迎刃而解了。我们可以这样来思考:当我们从第 n-1 阶楼梯爬到第 n 阶楼梯时,需要1步;当我们从第 n-2 阶楼梯爬到第 n 阶楼梯时,需要2步。也就是说,到达第 n 阶楼梯的方法数等于到达第 n-1 阶楼梯的方法数加上到达第 n-2 阶楼梯的方法数,即 f(n)=f(n−1)+f(n−2),正好符合斐波那契通项。函数都会产生一个新的函数调用栈帧,该栈帧保存了函数的局部变量和返回地址。,所以递归树的高度是。

weixin_43425300的博客 1418

周志华《机器学习》课程系列笔记——目录导航页

最近自学机器学习课程,注意到了南京大学周志华老师的课程。我是在学堂在线平台观看的,注意到b站上也有相应视频,但b站上并未获得授权,随时有消失的可能。周志华老师的网络教学视频中,与其西瓜书相比确实少了一些内容。但幸运的是,缺失的内容实际上对于初学者来说并不会产生太大影响。目前这一笔记也遵循视频内容,相比西瓜书中也会有一些缺失,敬请谅解。可能以后如果有机会和时间,我会再阅读周志华老师的书籍将缺失内容补全。一切内容敬请关注我的个人Page页面。

Sinocifengs的博客 1687

五分钟搞懂游戏开发中的抗锯齿算法

常见抗锯齿算法总结锯齿由来抗锯齿算法SSAAMSAACSAA 锯齿由来 场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组,这是计算机屏幕产生锯齿的原因。在计算机处理图形的过程中(渲染管线了解一下),有一个非常重要的阶段,就是光栅化,光栅化主要的作用是将顶点数据的不连续性通过插值计算,将两个顶点之间不存在的点进行弥补,然后实现到屏幕像素点上的一一映射。如图,现在要在屏幕上绘制一...

绿洲守望者 1万+

LeetCode 70.爬楼梯(递归、动态规划,滚动数组思想实现)

题目描述:有n阶楼梯,每次可以爬1或者2阶,问爬完n阶楼梯共有几种方案。 1.递归: 思路:假设现在在第x阶楼梯,他可以在x-1阶楼梯时再爬1阶到达x阶,也可以在x-2阶楼梯时再爬2阶到达x阶,设爬到x阶楼梯的总方案数为 f(x),则可以列出下面方程:(也可以一个个推理) 代码实现:(提交会超时) class Solution { public: int climbStairs(int n) { if(n<3){ return n; //1

weixin_46623714的博客 664

使用ggplot2包中的双Y轴功能在R语言中可视化时间序列数据,并在时序数据末尾添加数值标签是一种有效的数据展示方式

使用ggplot2包中的双Y轴功能在R语言中可视化时间序列数据,并在时序数据末尾添加数值标签是一种有效的数据展示方式。通过这种方式,我们可以同时展示两个变量的趋势,并在时序数据末尾添加数值标签,使得数据更加直观和易于理解。假设我们有一个包含两个变量的时间序列数据集,一个是时间变量,另一个是对应的数值变量。现在,我们可以使用ggplot2包来创建一个基本的时间序列图,其中包含两个数值变量。接下来,我们将添加一个双Y轴,并在时序数据末尾添加数值标签。函数在数值1的每个数据点上添加数值标签。

Orion_O的博客 269

LeetCode第66题:加一

题目 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321...

不写代码的博客 382

【BUG已解决】RuntimeError: CUDA error: no kernel image is available for execution on the device 解决方案

方案适用场景推荐指数精确匹配官方版本绝大多数场景(大众消费卡+主流数据中心卡)⭐⭐⭐⭐⭐安装历史旧版本Pascal/Maxwell等老显卡⭐⭐⭐⭐安装Nightly版本刚发布的最新架构显卡⭐⭐⭐⭐源码编译官方各版本均不支持的特殊硬件⭐⭐Docker官方镜像追求省心、避免版本排查⭐⭐⭐⭐⭐的核心是PyTorch 预编译包不包含你显卡对应的计算能力架构先确认显卡真实计算能力),而不是盲目重装驱动对比 PyTorch 支持的架构列表),定位是否真的不匹配精确匹配官方版本。

博客 1万+

手机直连低轨卫星通信:架构、关键技术和未来展望

【摘 要】借助低轨卫星星座全时全域覆盖优势,手机直连卫星通信预期成为6G重要特征之一。首先介绍了手机直连卫星的测试验证、标准化与商业项目发展现状。其次,介绍了基于透明转发、部分可再生处理、完全可再生处理、集成接入和回传的四种手机直连低轨卫星网络架构及组网方式。通过分析手机直连低轨卫星网络场景下高移动性与大传输时延等带来的接入与传输问题,提出对地面移动通信体制进行适应性改进的关键技术方案。最后,探讨了未来手机直连低轨卫星发展发向和潜在思路。通过上述阐述与分析,提供未来发展手机直连低轨卫星通信的可行路径。【关

fzq0625的博客 1707

LeetCode 66.加一(详解)

66.加一(点击查看原题) 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 解题思路 题意是指将数组的值转换成一个整数,在该整数个位上加一,若个位为9,则向前进一加到十位

qq_44404493的博客 313

Android AVB 分析(十二)嵌入式设备安全中的 dm-verity 简介

上一篇 《Android AVB 分析(十一)bootloader 是如何进行 verify boot 检查的?》 分析了 bootloader 中是如何调用 libavb 函数库验证 vbmeta 和 boot 等分区的。接下来就打算写一篇介绍 dm-verity 原理的文章,然后再写一篇徒手 dm-verity 实践的文章,结果偶然发现了本篇的英文原版。写得太好,我觉得自己完全没有必要再写原理了。由于原文是英文,有些英语不太好的朋友不一定能完全理解。我花了点时间,结合 AI 将英语原文翻译成中文。

洛奇看世界 3597

LeetCode 66~70

前言 本文隶属于专栏《LeetCode 刷题汇总》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构请见LeetCode 刷题汇总 正文 幕布 幕布链接 66. 加一 题解 Java 数学解题​ if (digits[i] != 0) return digits; class Solution { public int[] plusOne(int[] digits) { for (int i = digits.length - 1; i

Shockang的博客 5912

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【LeetCode Solutions】LeetCode 66 ~ 70 题解

【LeetCode Solutions】LeetCode 66 ~ 70 题解

一只快乐的小蒟蒻~ 449

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

leetCode 66-70

leetcode234-回文链表236-二叉树的最近公共祖先 234-回文链表 请判断一个链表是否为回文链表。 示例 1: 输入: 1->2->2->1 输出: true 示例 2: 输入: 1->2 输出: false /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} *

fan__lee的博客 277

【JavaScript】LeetCode:66-70

【代码】【JavaScript】LeetCode:66-70。

weixin_45980065的博客 736

LeetCode 实践练习66-70

LeetCode—66(加一) 方法:每次都判断是否为9,具体看代码。 C++代码: class Solution { public: vector<int> plusOne(vector<int>& digits) { int n = digits.size(); if(digits[n-1] != 9) {digits[...

qq_40104034的博客 220

力扣爆刷第116天之CodeTop100五连刷66-70

思路:可以采用概率组合,我们可以先用rand7构造出来一个p=0.2,再构造出来一个p=0.5,这两个事件构成一个事件的概率为p=0.1正好可以达到要求,例如先随机出来一个1-6的数,奇数偶数出现的概率为0.5,范围只要是偶数就行,然后我们再随机出来一个1-5的数,因为我们只放出来1-5,就相当于袋子里只有5个数,那每种数出现的概率就为0.2,然后组合到一块,判断第一个数是奇数还是偶数,通过这个返回1-5或者6-10。思路:直接中序遍历,用一个变量记录前一个节点,然后中序遍历比较,如果不是,直接早停返回。

qq_43511039的博客 410

力扣爆刷第96天之hot100五连刷66-70

思路:仔细看会发现不管旋转多少次,旋转之后都是下面的这种情况,即左边整体高于右边,那么要寻找最小值,只需要二分逐段缩小区间,至于如何缩小,请注意nums[right]一定小于nums[left],求出中值后,如果nums[right]>nums[mid]就说明中值靠左,右边不要了,更新right=mid,如果nums[right]<=nums[mid]说明中值靠右,只有nums[mid]小于nums[right]才可能出现最小值,所以更新left=mid+1.

qq_43511039的博客 946

每日5题Day14 - LeetCode 66 - 70

写不来,就用宫水三叶的解法吧。

alimamaalala的博客 337

leetcode题解python版:66-70

66、加一 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 解:先对n-1项+1,然后从右向左遍历,同时记录进位值。遍历完如果还剩1就插到最前面。 class Solution: def plusOne(self, digits: List[int]) -> List[int]: n=len(digits) jump=0

baidu_41689104的博客 315

力扣爆刷第160天之TOP100五连刷66-70(回溯、旋转图像、技巧题)

构造1/2:要最求尽可能的是1/2,一般来说,范围够大就行,用while循环产生数,只要大于6就一直循环,那么退出while循环时,出来的数只能是1-6,3个奇数,3个偶数,那么判断是奇数还是偶数就构造了1/2.思路:求二叉树的直径,说的是可能过根节点,也可能不过,其实最大直径求的就是每一个节点的左右子树高度和,那么就简单了,就是求树的高度,然后加和左右子树高度,然后记录即可。思路:本题让用产生1-7的随机数函数,构造产生1-10随机数的函数,其实很构造,只需要1/2 * 1/5即可。

qq_43511039的博客 909

面试笔试杂项积累-leetcode 66-70

66.66-Plus One-Difficulty:Easy Given a non-negative number represented as an array of digits, plus one to the number. The digits are stored such that the most significant digit is at the head of t

wolf96的专栏 754

LeetCode简单题目(#53 #58 #66 #67 #69 #70 #83 #88)-8道

leetcode题库中共有350道简单题目。 本文记录已解决的题目和代码。 本文中的序号是leetcode题目中的真实序号。 @toc 53 最大子序和 描述 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入: [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 解释: 连续子数组 [4,-1,2,1] ...

lingpy的博客 442

Python小白 Leetcode刷题历程 No.66-No.70 加一、二进制求和、文本左右对齐、x的平方根、爬楼梯 (有题干 有代码 有思路心得)

Python小白 Leetcode刷题历程 No.66-No.70 加一、二进制求和、文本左右对齐、x的平方根、爬楼梯 写在前面: 作为一个计算机院的大学生,总觉得仅仅在学校粗略的学习计算机专业课是不够的,尤其是假期大量的空档期,作为一个小白,实习也莫得路子,又不想白白耗费时间。于是选择了Leetcode这个平台来刷题库。编程我只学过基础的C语言,现在在自学Python,所以用Pyth...

LanXiu_的博客 441
上一篇: leetcode(61-65)
下一篇: leetcode(71-75)
小小螺丝刀
博客等级 码龄10年 41粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值