题目一:两数之和(难度:简单)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/two-sum
思路:通过哈希表存储数组中每个值的下标,遍历nums中的每个元素即可。
class Solution(object):
def twoSum(self, nums, target):
hashs=dict()
for i,item in enumerate(nums):
if target-item in hashs:
return [hashs[target-item],i]
hashs[item]=i
题目二:最长公共前缀(难度:简单)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-common-prefix
思路:本人智商比较低,只会暴力破解,详细不阐述。
class Solution(object):
def longestCommonPrefix(self, strs):
str=""
if "" in strs:
return str
elif len(strs)>1 and strs[0][0]==strs[1][0]:
for i in range(len(strs[0])):
if i<len(strs[1]) and strs[0][i]!=strs[1][i] or i>=len(strs[1]):
break
str+=strs[0][i]
elif len(strs)==1:
return strs[0]
else:
return str
index=len(str)
for i in range(2,len(strs)):
for j in range(min(len(strs[i]),len(str))):
if str[j]!=strs[i][j]:
index=j
str=str[:index]
break
if j==min(len(strs[i]),len(str))-1:
index=j+1
return str[:index]
第三题:4的幂(难度:简单)
给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/power-of-four
思路:不使用循环或递归,可以通过位运算判断n是否为2的幂,再通过n对3取模是否为1便可判断出n是否为4的幂。
class Solution(object):
def isPowerOfFour(self, n):
return n>0 and (n&(n-1))==0 and n%3==1
第四题:只出现一次的数组Ⅱ(难度:中等)
给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/single-number-ii
思路:通过字典存储每个元素出现的次数,然后按值找键即可。
class Solution(object):
def singleNumber(self, nums):
dic={}
for i in nums:
if i in dic:
dic[i]+=1
else :
dic[i]=1
return dic.keys()[dic.values().index(1)]
第五题:最大数(难度:中等)
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/largest-number
思路:两两判断组合数的大小,将大的数放到前面,随后将数转换为字符串即可
class Solution(object):
def largestNumber(self, nums):
for i in range(len(nums)-1):
for j in range(i+1,len(nums)):
if str(nums[i])+str(nums[j])<str(nums[j])+str(nums[i]):
nums[i],nums[j]=nums[j],nums[i]
for i in range(len(nums)):
nums[i]=str(nums[i])
if nums[0]=="0": return "0"
return "".join(nums)