> 文章列表 > 35. 搜索插入位置 58. 最后一个单词的长度

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

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

目录

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;
}

 

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