咱们称一个数 X 为好数, 若是它的每位数字逐个地被旋转 180 度后,咱们仍能够获得一个有效的,且和 X 不一样的数。要求每位数字都要被旋转。python
若是一个数的每位数字被旋转之后仍然仍是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们本身;2 和 5 能够互相旋转成对方;6 和 9 同理,除了这些之外其余的数字旋转之后都再也不是有效的数字。git
如今咱们有一个正整数 N
, 计算从 1
到 N
中有多少个数 X 是好数?数组
示例: 输入: 10 输出: 4 解释: 在[1, 10]中有四个好数: 2, 5, 6, 9。 注意 1 和 10 不是好数, 由于他们在旋转以后不变。
注意:app
[1, 10000]
。2.解题思路函数
# 1.if 数字中含有 3 4 7--不知足条件 # 2. elif数字所有由 0 1 8 构成--不知足条件 # 3. else:数字中含有2, 5, 6, 9--知足条件 #数字不含{3,4,7}含{2,5,6,9}
class Solution: def rotatedDigits(self, N: int) -> int: cnt = 0 a = {'3','4','7'} b = {'0','1','8'} c = {'2', '5', '6','9'} for num in range(1,N+1): if all(x not in a for x in str(num)) and not all(x in b for x in str(num)): cnt +=1 return(cnt) # 1.if 数字中含有 3 4 7--不知足条件 # 2. elif数字所有由 0 1 8 构成--不知足条件 # 3. else:数字中含有2, 5, 6, 9--知足条件 #数字不含{3,4,7}含{2,5,6,9}
给定一个数组 nums 和一个值 val,你须要原地移除全部数值等于 val 的元素,返回移除后数组的新长度。code
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。索引
元素的顺序能够改变。你不须要考虑数组中超出新长度后面的元素。element
示例 1:leetcode
给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 而且 nums 中的前两个元素均为 2。 你不须要考虑数组中超出新长度后面的元素。
示例 2:rem
给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 而且 nums 中的前五个元素为 0, 1, 3, 0, 4。 注意这五个元素可为任意顺序。 你不须要考虑数组中超出新长度后面的元素。
说明:
为何返回数值是整数,但输出的答案是数组呢?
请注意,输入数组是以“引用”方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。
你能够想象内部操做以下:
// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeElement(nums, val); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中该长度范围内的全部元素。 for (int i = 0; i < len; i++) { print(nums[i]); }
#难点在原来函数上修改 #首先记录全部val对应的索引 #而后一一删除
class Solution: def removeElement(self, nums: List[int], val: int) -> int: nums_del_list = list() cont = 0 for a in range(len(nums)): if nums[a]==val: nums_del_list.append(a) for b in nums_del_list: del nums[b+cont] cont -= 1
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,而后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母。
#有两种状况 #第一种添加的字母原来字母中没有,这个能够用FOR而后判断有无进行 #第二种添加的字母原来字母中有,用计数来判断 #为了减小运行时间咱们要引入SET的去重
class Solution: def findTheDifference(self, s: str, t: str) -> str: if len(set(t))==len(set(s)): for a in set(t): print(s.count(a)) print(t.count(a)) if s.count(a) != t.count(a): return a break else: for a in t: if a not in s: return a break
有更加好的思路,或者解题方法评论区留言谢谢