力扣题目(两数之和,回文数,猜数字大小,1比特与2比特字符)
程序员文章站
2022-06-24 11:10:32
力扣题目汇总 1.两数之和 1.题目描述 给定一个整数数组 和一个目标值 ,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 2.解答 2.回文数 1题目描述 示例 1: 示例 2: 示例 3 ......
力扣题目汇总
1.两数之和
1.题目描述
给定一个整数数组 nums
和一个目标值 target
,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:
给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
2.解答
class solution: def twosum(self, nums: list[int], target: int) -> list[int]: import copy new_list = [] for v in range(len(nums)): new_list_1=copy.copy(nums) #这里一开始用了深拷贝,后面深拷贝太费时间了换浅拷贝 del new_list_1[v] #这里copy和del是为了每次进入循环删除进入循环的那个字 if (target - nums[v]) in new_list_1: new_list.append(v) return(new_list)
2.回文数
1题目描述
示例 1:
输入: 121 输出: true
示例 2:
输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。
2.解答
class solution(object): def ispalindrome(self, x): """ :type x: int :rtype: bool """ if str(x)[::-1] == str(x)[:]: return true #跟着描述走,没碰到什么问题 else: return false
3.猜数字大小
1.题目描述
我们正在玩一个猜数字游戏。 游戏规则如下:
我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。
每次你猜错了,我会告诉你这个数字是大了还是小了。
你调用一个预先定义好的接口 guess(int num)
,它会返回 3 个可能的结果(-1
,1
或 0
):
-1 : 我的数字比较小 1 : 我的数字比较大 0 : 恭喜!你猜对了!
示例 :
输入: n = 10, pick = 6 输出: 6
2.解答
start = 1 mx = n while start <= mx: mid = start + (mx - start) // 2 z = guess(mid) if z == 1: start = mid + 1 elif z == -1: mx = mid -1 else: return mid '''主要是理解上面那个 -1 : 我的数字比较小 1 : 我的数字比较大 0 : 恭喜!你猜对了! ''' #理解反了,这是网上查的中中间开始可以减少时间,一开始从头开始循环时间超了
4.1比特与2比特字符
1.题目描述
有两种特殊字符。第一种字符可以用一比特0
来表示。第二种字符可以用两比特(10
或 11
)来表示。
现给一个由若干比特组成的字符串。问最后一个字符是否必定为一个一比特字符。给定的字符串总是由0结束。
示例 1:
输入: bits = [1, 0, 0] 输出: true 解释: 唯一的编码方式是一个两比特字符和一个一比特字符。所以最后一个字符是一比特字符。
示例 2:
输入: bits = [1, 1, 1, 0] 输出: false 解释: 唯一的编码方式是两比特字符和两比特字符。所以最后一个字符不是一比特字符。
2.解答
class solution: def isonebitcharacter(self, bits: list[int]) -> bool: i = -2 s = -len(bits) while i >= s and bits[i]: i -= 1 return i % 2 == 0 # 怎么出来忘了