1.两数之和

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。


nums = [2,7,11,15]
target = 9

for i in range(len(nums)):
    for j in range(i+1,len(nums)):
            if nums[i] + nums[j] == target:
                print([i,j])

2.三数之和(超时了311/313)

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
nums = [-1, 0, 1, 2, -1, -4]
target = 0
lis1=[]
lis2=[]
for i in range(len(nums)):
    for j in range(i+1,len(nums)-2):
        for k in range(j + 1, len(nums)-1):
            if nums[i] + nums[j] + nums[k] == target:
                lis = [nums[i],nums[j],nums[k]]
                lis1.append(lis)
                break
for l in range(len(lis1)):
    lis1[l].sort()
for m in lis1:
    if m not in lis2:
        lis2.append(m)
print(lis2)

3.无重复字符的最长子串(复制的)

给定一个字符串,请你找出其中不含有重复字符的 最长子串的长度。

    maxm = 0
    for i in range(len(s)):
        if s[i] in l:
            p = l.index(s[i])
            l = l[p+1:]
        l.append(s[i])
        maxm = max(len(l),maxm)
    return maxm

4.寻找两个有序数组的中位数

给定两个大小为 m 和 n 的有序数组 nums1nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1nums2 不会同时为空

nums1 = [1, 3]
nums2 = [2]

nums1.extend(nums2)
nums1.sort()
n = len(nums1)
if n%2 == 0:
   x = (nums1[int(n/2-1)]+nums1[int(n/2)])/2
   print(float(x))
else:
   y = nums1[int((n-1)/2)]
   print(float(y))

5.整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。(假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0)

x = -12345

int_a = abs(x)
str_b = str(int_a)[::-1]
int_c = int(str_b)
if x > 0 and int_c < 2 ** 31 - 1:
    print(int_c)
elif -int_c > -2 ** 31 and x <= 0:
    print(-int_c)
else:
    print(0)

6.回文数

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

x = -121
y = int(str(abs(x))[::-1])
print(y==x)

7.有效括号

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

s = '()'

while '()' in s or '[]' in s or '{}' in s:
            s = s.replace('()','')
            s = s.replace('[]', '')
            s = s.replace('{}', '')
print( not s)

8.两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

nums1 = [1,2,2,1]
nums2 = [2,2]

lis = []
for i in nums1:
    for j in nums2:
        if i == j:
            lis.append(i)
new_lis = []
for i in lis:
    if i not in new_lis:
        new_lis.append(i)
return (new_lis)

9.实现strStr()

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1

haystack = "hello"
needle = "ll"
print(haystack.find(needle))

10.收索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。

nums = [1,3,4,6]
target =5

if target in nums:
    print(nums.index(target))
else:
    nums.append(target)
    nums.sort()
    print(nums.index(target))

11.只出现一次数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

nums=[2,2,1]

if len(nums) == 1:
    return (nums[0])
else:
    nums.sort()
    if nums[0] != nums[1]:
        return (nums[0])
    elif nums[-1] != nums[-2]:
        return (nums[-1])
    else:
        for i in range(1, len(nums) - 1):
            if nums[i] != nums[i - 1] and nums[i] != nums[i + 1]:
                return (nums[i])

12.存在重复元素

给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。

nums = [1,2,3,1]
return (len(set(nums)) != len(nums))
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄