35. 搜索插入位置 58. 最后一个单词的长度

news2024/9/22 2:41:42

目录

35. 搜索插入位置 

思路

代码 

 58. 最后一个单词的长度

思路1

代码1

思路2

代码2 


 

35. 搜索插入位置 

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

示例 1:

输入: nums = [1,3,5,6], target = 5
输出: 2
示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1
示例 3:

输入: nums = [1,3,5,6], target = 7
输出: 4
 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/search-insert-position

思路

本题简单,唯一需注意的点是:目标值不存在于数组中时,返回它将会被按顺序插入的位置(按升序),如

示例 2:

输入: nums = [1,3,5,6], target = 2
输出: 1

所以我创建了count变量,利用他来解决这样的情况(本题数组为排序数组

每走一位都和目标值比较一下,元素比目标值小count就++,(count从0开始,这样count的值直接就是该目标值所插入的下标

代码 

int searchInsert(int* nums, int numsSize, int target)
{
    int i = 0;
    int count = 0;
    for(i = 0; i < numsSize; i++)
    {
        if(nums[i] == target)
        {
            return i;
        }
        if(nums[i] < target)
        {
            count++;
        }
    }
    return count;
}

 

 58. 最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

 

示例 1:

输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5。
示例 2:

输入:s = "   fly me   to   the moon  "
输出:4
解释:最后一个单词是“moon”,长度为4。
示例 3:

输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为6的“joyboy”。
 

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/length-of-last-word

思路1

暴力解题

i 从最后一位来

 

由这个例子我们知道,最后一个单词后面会有空格这种情况,我们需把空格跳过,

示例 2:

输入:s = "   fly me   to   the moon  "
输出:4

 

之后创建了count变量来计数,注意while循环里i > 0,不然会溢出,力扣会报错 

因为以上没有i = 0;情况(应对"a"这样的),所以要填上,

注意s[i] 不能 等于 ' '(防止这种情况"   ab")

 这几个代码块循序可不能变

代码1

int lengthOfLastWord(char* s)
{
    int len = strlen(s);
    int i = len - 1;
    int count = 0;
    while (s[i] == ' ')
    {
        i--;
    }
    while (s[i] != ' ' && i > 0)
    {
        i--;
        count++;
    }
    if (i == 0 && s[i] != ' ')
    {
        count++;
    }
    return count;
}

思路2

第二种代码更简洁一点,利用了for循环,循环条件写对,就不用考虑溢出情况,

还是从后面开始(i = len - 1),创建count变量来计数,s[i] != ' ',count++;

下面的代码我觉得满巧妙的(o゜▽゜)o☆

如果s[i] == ' '并且count != 0,这个并且就很巧妙ヾ(≧▽≦*)o,

count != 0,就说明这是已经经过了一个单词之后才遇到的空格就该跳出循环啦,之后返回count就行了 

 

 

代码2 

int lengthOfLastWord(char* s)
{
    int len = strlen(s);
    int i = len - 1;
    int count = 0;
    for(i = len - 1; i >= 0; i--)
    {
        if(s[i] != ' ')
        {
            count++;
        }
        if(s[i] == ' ' && count != 0)
        {
            break;
        }
    }
    return count;
}

 

 ╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯完╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯╰(*°▽°*)╯

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/453174.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

存钱罐出口欧盟CE认证ROHS标准测试

近年来生活水平提高&#xff0c;人们手头上的余钱也多了起来&#xff0c;家长们通常会给小孩子买存钱罐&#xff0c;培养小孩子的理财能力&#xff0c;养成良好的财富观&#xff0c;一般的存钱罐都被设计用来存放硬币&#xff0c;一般分为陶瓷&#xff0c;塑料和金属。上端有缝…

电脑蓝屏怎么办?一招教你修好

很多用户遇到电脑蓝屏问题之后不懂怎么去进行解决&#xff1f;电脑蓝屏之后&#xff0c;我们只需要花一分钟制作一个启动盘&#xff0c;然后用这个启动盘来进行系统的重装就可以了。那么具体要怎么去操作呢&#xff1f;以下带来具体的操作方法教学。 准备工作&#xff1a; 1、U…

备忘录设计模式(Memento Pattern)[论点:概念、组成角色、示例代码、框架中的运用、适用场景]

文章目录 概念组成角色示例代码框架中的运用适用场景 概念 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于保存对象的内部状态&#xff0c;以便在需要时恢复到先前的状态。这种模式有助于实现撤销、恢复或回滚操作&#xff0c;同…

软件测试之基础概念学习篇(需求 + 测试用例 + 开发模型 + 测试模型 + BUG)

文章目录 1. 什么是软件测试2. 软件测试和软件开发的区别3. 软件测试和软件调试的区别4. 什么是需求1&#xff09;以需求为依据设计测试用例 5. 测试用例是什么6. 什么是 BUG&#xff08;软件错误&#xff09;7. 五个开发模型1&#xff09;瀑布模型2&#xff09;螺旋模型3&…

有哪些方法可以防止企业内部数据泄露?

企业内部数据安全威胁多数源于企业内部&#xff0c;企业内部存在许多安全威胁&#xff0c;主要包括: 1. 员工误操作或疏忽&#xff1a;这是导致内部安全事故的最主要原因之一。员工对安全程序缺乏认识或执行不严谨&#xff0c;可能会无意中泄露敏感数据或引发系统漏洞。 2. 未经…

Windows 服务监控工具

在任何企业中&#xff0c;Windows 服务都是面向业务的应用程序的核心组件。这些 Windows 服务的有效运行对于防止网络和应用程序停机至关重要。这使得 Windows 服务监视成为任何网络管理策略的关键部分。 Windows 服务监视使管理员能够确保关键 Windows 服务的可用性&#xff…

mysql的函数 --- MySQL总结(二)

mysql的函数 文章目录 mysql的函数日期函数字符串函数其他函数 日期函数 上面的所以的函数都可以使用select进行展现相应的数据 这里的使用current_date()时间戳&#xff0c;其他日期都可以相似的操作进行对于时间的操作 字符串函数 后面这里的操作查找name表之中的id的字符集&…

重构这件“小”事儿 | 得物技术

本文以一个Web项目的业务代码重构实践作为依据&#xff0c;来探讨项目业务代码重构过程中遇到的开发问题&#xff0c;以及重构过程中的一些注意点&#xff0c;希望可以给项目开发和服务开发维护重构提供一些通用的参考与思路。 这里不探讨大型项目的重构实践&#xff0c;毕竟一…

SHELL的脚本编写(2)

目录 1.编写脚本for1.sh&#xff0c;使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如&#xff1a;test1、test2、test3、......、test10 首先创建并编写for1.sh 查看结果 2.编写脚本for2.sh&#xff0c;使用…

Java - Lambda 表达式

一、背景 Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda 表达式&#xff08;Lambda expression&am…

【数据库】— 2NF、3NF、BCNF、最小函数依赖集例题

判断范式级别 设有关系模式W(C,P,S,G,T,R)&#xff0c;其中各属性的含义是&#xff1a;C课程&#xff0c;P教师&#xff0c;S学生&#xff0c;G成绩&#xff0c;T时间&#xff0c;R教室&#xff0c;根据定义有如下数据依赖集 D{ C→P&#xff0c;(S,C)→G&#xff0c;(T,R)→C&…

时序预测 | MATLAB实现SSA-LSTM、LSTM麻雀算法优化长短期记忆神经网络时间序列预测(含优化前后对比)

时序预测 | MATLAB实现SSA-LSTM、LSTM麻雀算法优化长短期记忆神经网络时间序列预测(含优化前后对比) 目录 时序预测 | MATLAB实现SSA-LSTM、LSTM麻雀算法优化长短期记忆神经网络时间序列预测(含优化前后对比)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 麻雀搜索算法(…

Redis最新版本安装教程——Linux操作系统(Centos7)

Redis是基于C语言编写的&#xff0c;因此首先需要安装Redis所需要的gcc依赖&#xff1a; yum install -y gcc tcl 下载安装包并解压 Redis的官方网站地址&#xff1a;RedisRedis is an open source (BSD licensed), in-memory data structure store, used as a database, cach…

【前端下载文件流详解】前端实现多种类型文件(word,excel,pdf,rar,zip等)的下载,接口返回文件流形式(附源码)

【写在前面】其实之前我也写了有关java实现文件的下载&#xff0c;但是当时是局限于excel文档&#xff0c;针对其他类型的并没有介绍&#xff0c;这次刚好有个客户现场反馈回来的&#xff0c;说我们系统确实能下载报告&#xff0c;但是甲方领导要看所有的报告&#xff0c;这不我…

【持续升级】Vue3 系统入门与项目实战无密分享闻郎江上唱歌声

Vue3 系统入门指南&#xff1a;开发高效、可维护的Web应用 【持续升级】Vue3 系统入门与项目实战 下栽のke呈&#xff1a;https://www.666xit.com/3811/ Vue.js是目前最流行的JavaScript框架之一&#xff0c;它的最新版本Vue3已经发布。Vue3具有更好的性能和可维护性&#x…

HNU数据结构与算法分析-小班6

HNU数据结构与算法分析-小班6

一文带你入门MySQL

目录 一、MySQL登陆1.配置MySQL环境变量2.MySQL登陆命令 二、MySQL基础知识1.数据类型&#xff08;1&#xff09;整型&#xff08;2&#xff09;浮点型&#xff08;3&#xff09;日期型&#xff08;4&#xff09;字符型&#xff08;5&#xff09;数据类型小结 2.MySQL的约束【重…

​力扣解法汇总1105. 填充书架

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 给定一个数组 books &#xff0c;其中 books[i] [thicknessi, heighti] 表示第…

【c语言习题】return中途结束 函数调用

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

王道计组(23版)6_总线

总线概述 特点 分时&#xff1a;同一时刻只允许一个部件向总线发送信息 共享&#xff1a;总线上可以挂接多个部件&#xff0c;各个部件互相交换的信息都可以通过这组线路分时共享&#xff0c;多个部件可以同时从总线接收相同的信息 分类 片内总线&#xff1a;CPU芯片内部AL…