【Leetcode -704.二分查找 -709.转换成小写字母 -717.1比特与2比特字符】

news/2024/10/19 17:34:37/

Leetcode

  • Leetcode -704.二分查找
  • Leetcode -709.转换成小写字母
  • Leetcode -717.1比特与2比特字符

Leetcode -704.二分查找

题目:给定一个 n 个元素有序的(升序)整型数组nums和一个目标值 target,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 - 1。

示例 1:
输入: nums = [-1, 0, 3, 5, 9, 12], target = 9
输出 : 4
解释 : 9 出现在 nums 中并且下标为 4

示例 2 :
输入 : nums = [-1, 0, 3, 5, 9, 12], target = 2
输出 : -1
解释 : 2 不存在 nums 中因此返回 - 1

提示:
你可以假设 nums 中的所有元素是不重复的。
n 将在 [1, 10000]之间。
nums 的每个元素都将在 [-9999, 9999]之间。

思路是双指针分别从数组的头和尾开始遍历,每次用中间指针 mid 判断与 target 的大小关系,等于则返回下标 mid ;中间下标对应的值比 target 大就更新右指针,收缩右边范围;中间下标对应的值比 target 小就更新左指针,收缩左边的范围,直到找到;找不到则返回 -1;

		int search(int* nums, int numsSize, int target){//双指针下标int left = 0, right = numsSize - 1;//当左指针小于等于右指针循环继续while (left <= right){// mid 取left和right的中间下标,left + (right - left) / 2 是为了防止溢出int mid = left + (right - left) / 2;//如果中间下标等于 target 返回下标//如果中间下标大于 target,将中间下标-1赋给右指针//如果中间下标小于 target,将中间下标+1赋给左指针if (nums[mid] == target)return mid;else if (nums[mid] > target)right = mid - 1;elseleft = mid + 1;}//如果找不到,返回-1return -1;}

Leetcode -709.转换成小写字母

题目:给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

示例 1:
输入:s = “Hello”
输出:“hello”

示例 2:
输入:s = “here”
输出:“here”

示例 3:
输入:s = “LOVELY”
输出:“lovely”

提示:
1 <= s.length <= 100
s 由 ASCII 字符集中的可打印字符组成

思路是,在ASCII表中小写字母比对应的大写字母大32,直接转换即可;

		char* toLowerCase(char* s){//遍历字符串,直接将大写字母加上32,即可转换成小写字母for (int i = 0; i < strlen(s); i++){if (s[i] >= 'A' && s[i] <= 'Z'){s[i] += 32;}}return s;}

Leetcode -717.1比特与2比特字符

题目:有两种特殊字符:
第一种字符可以用一比特 0 表示
第二种字符可以用两比特(10 或 11)表示
给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true 。

示例 1:
输入: bits = [1, 0, 0]
输出 : true
解释 : 唯一的解码方式是将其解析为一个两比特字符和一个一比特字符。
所以最后一个字符是一比特字符。

示例 2 :
输入:bits = [1, 1, 1, 0]
输出:false
解释:唯一的解码方式是将其解析为两比特字符和两比特字符。
所以最后一个字符不是一比特字符。

提示 :
1 <= bits.length <= 1000
bits[i] 为 0 或 1

思路是 i 从0开始遍历,每次走的步长是当前元素的值+1,因为当遇到字符 1 的时候,需要走两步;当遇到字符 0 的时候需要走一步;最后判断 i 走的总步长是否等于数组除去最后一个字符 0 后的长度;

		bool isOneBitCharacter(int* bits, int bitsSize){// i 从0开始遍历,到数组的倒数第二个结束,遍历的步长就是当前元素的值+1// 因为字符 1 不能单独作一个字符,所以遇到字符 1 肯定是会与它后面的字符组成特殊字符,所以遇到字符1,i每次要走两步// 而字符 0 只能单独作为一个字符,所以遇到字符 0 ,i每次走一步//因为要判断这个数组中的结束字符是否是 1比特位的,所以就除去最后一位字符,判断 i 走的总步长是否等于除去最后一位的数组的长度,等于则返回true;否则返回falseint i = 0;while (i < bitsSize - 1){i += bits[i] + 1;}return i == bitsSize - 1;}

http://www.ppmy.cn/news/96693.html

相关文章

统计学的假设检验

假设检验的核心其实就是反证法。反证法是数学中的一个概念&#xff0c;就是你要证明一个结论是正确的&#xff0c;那么先假设这个结论是错误的&#xff0c;然后以这个结论是错误的为前提条件进行推理&#xff0c;推理出来的结果与假设条件矛盾&#xff0c;这个时候就说明这个假…

Solidity基础五

暂时的一事无成也代表将来万事皆有可能&#xff01; 目录 一、对Solidity文件的理解 二、Solidity的导sol文件&#xff08;库、合约&#xff09; 三、Solidity的继承 1.继承的分类 2.继承的可见性 3.父合约构造函数的传参 4.调用父合约成员 5.重写 四、Solidity的抽象…

第6章 Constant, Static and Name Space

Const • declares a variable to have a constant value const int x 123; x 27; // illegal! x; // illegal! int y x; // Ok, copy const to non-const y x; // Ok, same thing const int z y; // ok, const is safer 变量variable 常量 constant &#x…

【JDK】一、jdk17的下载与安装配置(图文说明超详细)

JDK17的下载与安装 前言一、JDK17下载1、官方下载地址 &#xff08; Oracle中国的官方网站&#xff09; 二、JDK17安装1、先看一下我现在的java版本和环境变量2、开始新的安装第一步&#xff1a;双击下载的jdk-17.0.7_windows-x64_bin.exe 进入到安装页面第二步&#xff1a;jdk…

定制底部footer bug:切换tab时position fixed会抖动

文章目录 bug描述position:fixed是啥&#xff1f;有啥用为什么切换tab的时候会抖动如何解决自定义一个InBody组件&#xff0c;将里面所有的元素放到body里面需要放到的底部的内容都放到这个组件里面 bug描述 在element admin里面定制了footer组件&#xff0c;每个页面也可还有…

剑指 Offer 10- II 青蛙跳台阶问题

题目&#xff1a; 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e97&#xff08;1000000007&#xff09;&#xff0c;如计算初始结果为&#xff1a;1000000008&#xff0c;请返回 1。 示例 1&am…

URL中特殊字符处理

在实际开发中&#xff0c;难免遇到url的出现一些特殊字符&#xff0c;此时需要编码处理&#xff0c;平时在浏览直接输入 ascii 表以外的字符时&#xff0c;浏览器会自动帮我们编码&#xff0c;但是在开发中&#xff0c;需要我们手动编码。 带有功能的特殊符号 加号 &#xff…

有感(1)

今晚喝了酒&#xff0c;看着平凡的世界感觉很有深度&#xff0c;感慨于1976年的长辈们为了改变命运而学习&#xff0c;感觉超越了目前我的精神状态太多&#xff0c;可惜去年才意识到这个问题&#xff0c;我是悲哀的一个&#xff0c;也是懦弱的一个&#xff0c;无法在众多问题中…