Leetcode简单题61~80

61.思路:bin# 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。# 示例 1:# 输入:00000000000000000000000000001011# 输出:3# 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1‘。# 示例 2:# 输入:00000000000000000000000010000000# 输出:1# 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 ‘1‘。# 示例 3:# 输入:11111111111111111111111111111101# 输出:31# 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 ‘1‘。#meclass Solution(object):    def hammingWeight(self, n):        return bin(n).count(‘1‘)
62.思路:直述题意# 写一个程序,输出从 1 到 n 数字的字符串表示。# 1. 如果 n 是3的倍数,输出“Fizz”;# 2. 如果 n 是5的倍数,输出“Buzz”;# 3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。# 示例:# n = 15,# 返回:# [#     "1",#     "2",#     "Fizz",#     "4",#     "Buzz",#     "Fizz",#     "7",#     "8",#     "Fizz",#     "Buzz",#     "11",#     "Fizz",#     "13",#     "14",#     "FizzBuzz"# ]#meclass Solution(object):    def fizzBuzz(self, n):        result = []        for i in range(1,n+1):            if i%3==0 and i%5!=0:                result.append(‘Fizz‘)            elif i%5==0 and i%3!=0:                result.append(‘Buzz‘)            elif i%3==0 and i%5==0:                result.append(‘FizzBuzz‘)            else:                result.append(str(i))        return result
63.思路:计算balloon中各字母的个数# 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球)。# 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "balloon"。# 示例 1:# 输入:text = "nlaebolko"# 输出:1# 示例 2:# 输入:text = "loonbalxballpoon"# 输出:2# 示例 3:# 输入:text = "leetcode"# 输出:0#meclass Solution(object):    def maxNumberOfBalloons(self, text):        return min(text.count(‘b‘), text.count(‘a‘), text.count(‘l‘)//2, text.count(‘o‘)//2, text.count(‘n‘))
64.思路:collections.deque()引入队列# 使用队列实现栈的下列操作:# push(x) -- 元素 x 入栈# pop() -- 移除栈顶元素# top() -- 获取栈顶元素# empty() -- 返回栈是否为空# 注意:# 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。# 你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。# 你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。#otherimport collectionsclass MyStack:    def __init__(self):        self.data = collections.deque()    def push(self, x):        """        Push element x onto stack.        :type x: int        :rtype: None        """        self.data.append(x)        for i in range(len(self.data) - 1):            self.data.append(self.data.popleft())    def pop(self):        """        Removes the element on top of the stack and returns that element.        :rtype: int        """        return self.data.popleft()    def top(self):        """        Get the top element.        :rtype: int        """        return self.data[0]    def empty(self):        """        Returns whether the stack is empty.        :rtype: bool        """        return not len(self.data)
65.思路:数学推导# 排排坐,分糖果。# 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。# 给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。# 然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。# 重复上述过程(每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始),直到我们分完所有的糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。# 返回一个长度为 num_people、元素之和为 candies 的数组,以表示糖果的最终分发情况(即 ans[i] 表示第 i 个小朋友分到的糖果数)。# 示例 1:# 输入:candies = 7, num_people = 4# 输出:[1,2,3,1]# 解释:# 第一次,ans[0] += 1,数组变为 [1,0,0,0]。# 第二次,ans[1] += 2,数组变为 [1,2,0,0]。# 第三次,ans[2] += 3,数组变为 [1,2,3,0]。# 第四次,ans[3] += 1(因为此时只剩下 1 颗糖果),最终数组变为 [1,2,3,1]。# 示例 2:# 输入:candies = 10, num_people = 3# 输出:[5,2,3]# 解释:# 第一次,ans[0] += 1,数组变为 [1,0,0]。# 第二次,ans[1] += 2,数组变为 [1,2,0]。# 第三次,ans[2] += 3,数组变为 [1,2,3]。# 第四次,ans[0] += 4,最终数组变为 [5,2,3]。#otherclass Solution(object):    def distributeCandies(self, candies, num_people):        ans = [0 for i in range(num_people)]        x = 1        while candies > 0:            for i in range(num_people):                if candies > x:                    ans[i] += x                    candies -= x                    x += 1                else:                    ans[i] += candies                    candies = 0        return ans
66.思路:计算字母偶数个数# 给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。# 示例 1:# 输入: "code"# 输出: false# 示例 2:# 输入: "aab"# 输出: true# 示例 3:# 输入: "carerac"# 输出: true#meclass Solution(object):    def canPermutePalindrome(self, s):        s_set = set(s)        s_num_list = []        for sub in s_set:            s_num_list.append(s.count(sub))        num = 0        for s_num in s_num_list:            if s_num%2==0:                num+=1        return True if num>=(len(s_num_list)-1) else False
67.思路:直述题意,str.lower(),str.upper()# 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。# 示例:# 输入: S = "a1b2"# 输出: ["a1b2", "a1B2", "A1b2", "A1B2"]# 输入: S = "3z4"# 输出: ["3z4", "3Z4"]# 输入: S = "12345"# 输出: ["12345"]#otherclass Solution(object):    def letterCasePermutation(self, S):        res = [‘‘]        for ch in S:            if ch.isalpha():                res = [old+new for old in res for new in [ch.lower(), ch.upper()]]                #print(res)            else:                res = [old+ch for old in res]            print(res)        return res
68.思路:直述题意# 给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。# 你可以假设数组是非空的,并且给定的数组总是存在多数元素。# 示例 1:# 输入: [3,2,3]# 输出: 3# 示例 2:# 输入: [2,2,1,1,1,2,2]# 输出: 2#meclass Solution(object):    def majorityElement(self, nums):        return [i for i in set(nums) if nums.count(i)>len(nums)//2][0]
69.思路:直述题意,依次比较相邻两个述# 给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。# 示例 1:# 输入: 5# 输出: True# 解释:# 5的二进制数是: 101# 示例 2:# 输入: 7# 输出: False# 解释:# 7的二进制数是: 111# 示例 3:# 输入: 11# 输出: False# 解释:# 11的二进制数是: 1011# 示例 4:# 输入: 10# 输出: True# 解释:# 10的二进制数是: 1010#meclass Solution(object):    def hasAlternatingBits(self, n):        str_n = str(bin(n)[2:])        flag = True        for i in range(1,len(str_n)):            if str_n[i] == str_n[i-1]:                flag = False                break        return flag
70.思路:直述题意# 给定两个字符串 s 和 t,它们只包含小写字母。# 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。# 请找出在 t 中被添加的字母。# 示例:# 输入:# s = "abcd"# t = "abcde"# 输出:# e# 解释:# ‘e‘ 是那个被添加的字母。#meclass Solution(object):    def findTheDifference(self, s, t):        for i in t:            if s.count(i) != t.count(i):                return i
*71.思路:转换思维# 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。# 字符          数值# I             1# V             5# X             10# L             50# C             100# D             500# M             1000# 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。# 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:# I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。# X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 # C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。# 给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。# 示例 1:# 输入: "III"# 输出: 3# 示例 2:# 输入: "IV"# 输出: 4# 示例 3:# 输入: "IX"# 输出: 9# 示例 4:# 输入: "LVIII"# 输出: 58# 解释: L = 50, V= 5, III = 3.# 示例 5:# 输入: "MCMXCIV"# 输出: 1994# 解释: M = 1000, CM = 900, XC = 90, IV = 4.#otherclass Solution(object):    def romanToInt(self, s):        d = {‘I‘: 1, ‘IV‘: -1, ‘V‘: 5, ‘IX‘: -1,             ‘X‘: 10, ‘XL‘: -10, ‘L‘: 50, ‘XC‘: -10,             ‘C‘: 100, ‘CD‘: -100, ‘D‘: 500, ‘CM‘: -100,             ‘M‘: 1000}        return sum(d.get(s[i: i + 2], d[s[i]]) for i in range(len(s)))
72.思路:直述题意# 给定两个句子 A 和 B 。 (句子是一串由空格分隔的单词。每个单词仅由小写字母组成。)# 如果一个单词在其中一个句子中只出现一次,在另一个句子中却没有出现,那么这个单词就是不常见的。# 返回所有不常用单词的列表。# 您可以按任何顺序返回列表。# 示例 1:# 输入:A = "this apple is sweet", B = "this apple is sour"# 输出:["sweet","sour"]# 示例 2:# 输入:A = "apple apple", B = "banana"# 输出:["banana"]#meclass Solution0(object):    def uncommonFromSentences(self, A, B):        sig_word_A = [i for i in A.split(‘ ‘)]        sig_word_B = [i for i in B.split(‘ ‘)]        result = []        for sigA in sig_word_A:            if sig_word_A.count(sigA) == 1:                if sigA not in sig_word_B:                    result.append(sigA)        for sigB in sig_word_B:            if sig_word_B.count(sigB) == 1:                if sigB not in sig_word_A:                    result.append(sigB)        return result
73.思路:直述题意# 给出第一个词 first 和第二个词 second,考虑在某些文本 text 中可能以 "first second third" 形式出现的情况,其中 second 紧随 first 出现,third 紧随 second 出现。# 对于每种这样的情况,将第三个词 "third" 添加到答案中,并返回答案。# 示例 1:# 输入:text = "alice is a good girl she is a good student", first = "a", second = "good"# 输出:["girl","student"]# 示例 2:# 输入:text = "we will we will rock you", first = "we", second = "will"# 输出:["we","rock"]#meclass Solution0(object):    def findOcurrences(self, text, first, second):        return [text.split(‘ ‘)[i] for i in range(2,len(text.split(‘ ‘))) if text.split(‘ ‘)[i-2]==first and text.split(‘ ‘)[i-1]==second]#other#正则表达式import reclass Solution1(object):    def findOcurrences(self, text, first, second):        return re.findall("(?<={first} {second} )\S*", text)
74.思路:直述题意# 给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 # 如果没有两个连续的 1,返回 0 。# 示例 1:# 输入:22# 输出:2# 解释:# 22 的二进制是 0b10110 。# 在 22 的二进制表示中,有三个 1,组成两对连续的 1 。# 第一对连续的 1 中,两个 1 之间的距离为 2 。# 第二对连续的 1 中,两个 1 之间的距离为 1 。# 答案取两个距离之中最大的,也就是 2 。# 示例 2:# 输入:5# 输出:2# 解释:# 5 的二进制是 0b101 。# 示例 3:# 输入:6# 输出:1# 解释:# 6 的二进制是 0b110 。# 示例 4:# 输入:8# 输出:0# 解释:# 8 的二进制是 0b1000 。# 在 8 的二进制表示中没有连续的 1,所以返回 0 。#meclass Solution0(object):    def binaryGap(self, N):        strBinN = str(bin(N))[2:]        index_1 = [Id for Id, strn in enumerate(strBinN) if strn==‘1‘]        resultList = []        for i in range(1, len(index_1)):            resultList.append(index_1[i]-index_1[i-1])        return max(resultList) if resultList != [] else 0#otherclass Solution1(object):    def binaryGap(self, N):        return max([len(i) + 1 for i in bin(N)[2:].split(‘1‘)[1:-1]] + [0])
75.思路:直述题意# 给你一个整数数组 A,请找出并返回在该数组中仅出现一次的最大整数。# 如果不存在这个只出现一次的整数,则返回 -1。# 示例 1:# 输入:[5,7,3,9,4,9,8,3,1]# 输出:8# 解释:# 数组中最大的整数是 9,但它在数组中重复出现了。而第二大的整数是 8,它只出现了一次,所以答案是 8。# 示例 2:# 输入:[9,9,8,8]# 输出:-1# 解释:# 数组中不存在仅出现一次的整数。#meclass Solution(object):    def largestUniqueNumber(self, A):        return max([i for i in A if A.count(i)==1]) if [i for i in A if A.count(i)==1]!=[] else -1
76.思路:直述题意# 我们来定义一个函数 f(s),其中传入参数 s 是一个非空字符串;该函数的功能是统计 s  中(按字典序比较)最小字母的出现频次。# 例如,若 s = "dcce",那么 f(s) = 2,因为最小的字母是 "c",它出现了 2 次。# 现在,给你两个字符串数组待查表 queries 和词汇表 words,请你返回一个整数数组 answer 作为答案,其中每个 answer[i] 是满足 f(queries[i]) < f(W) 的词的数目,W 是词汇表 words 中的词。# 示例 1:# 输入:queries = ["cbd"], words = ["zaaaz"]# 输出:[1]# 解释:查询 f("cbd") = 1,而 f("zaaaz") = 3 所以 f("cbd") < f("zaaaz")。# 示例 2:# 输入:queries = ["bbb","cc"], words = ["a","aa","aaa","aaaa"]# 输出:[1,2]# 解释:第一个查询 f("bbb") < f("aaaa"),第二个查询 f("aaa") 和 f("aaaa") 都 > f("cc")。#meclass Solution(object):    def numSmallerByFrequency(self, queries, words):        midqueries = [i.count(min(i)) for i in queries]        midwords = [j.count(min(j)) for j in words]        result = []        for subquer in midqueries:            num = 0            for subword in midwords:                if subquer<subword:                    num+=1            result.append(num)        return result
*77.思路:转换思维,先将所有的偶数都减去,再相加进行判断# 给出一个整数数组 A 和一个查询数组 queries。# 对于第 i 次查询,有 val = queries[i][0], index = queries[i][1],我们会把 val 加到 A[index] 上。然后,第 i 次查询的答案是 A 中偶数值的和。# (此处给定的 index = queries[i][1] 是从 0 开始的索引,每次查询都会永久修改数组 A。)# 返回所有查询的答案。你的答案应当以数组 answer 给出,answer[i] 为第 i 次查询的答案。# 示例:# 输入:A = [1,2,3,4], queries = [[1,0],[-3,1],[-4,0],[2,3]]# 输出:[8,6,2,4]# 解释:# 开始时,数组为 [1,2,3,4]。# 将 1 加到 A[0] 上之后,数组为 [2,2,3,4],偶数值之和为 2 + 2 + 4 = 8。# 将 -3 加到 A[1] 上之后,数组为 [2,-1,3,4],偶数值之和为 2 + 4 = 6。# 将 -4 加到 A[0] 上之后,数组为 [-2,-1,3,4],偶数值之和为 -2 + 4 = 2。# 将 2 加到 A[3] 上之后,数组为 [-2,-1,3,6],偶数值之和为 -2 + 6 = 4。#otherclass Solution(object):    def sumEvenAfterQueries(self, A, queries):        S = sum(x for x in A if x % 2 == 0)        ans = []        for x, k in queries:            if A[k] % 2 == 0:  # 关键在这里,要换一个思维角度,不要像方法二一样分类,只要是偶数先减掉再说                S -= A[k]            print(S)            A[k] += x            if A[k] % 2 == 0:  # 只要是偶数就加上                S += A[k]            print(S)            ans.append(S)        return ans
*78.思路:进行遍历,遇到0就进行剔除并添加# 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。# 示例:# 输入: [0,1,0,3,12]# 输出: [1,3,12,0,0]# 说明:# 必须在原数组上操作,不能拷贝额外的数组。# 尽量减少操作次数。#meclass Solution(object):    def moveZeroes(self, nums):        for i in nums:            if i == 0:                nums.append(0)                nums.remove(0)        return nums
79.思路:直述题意# 给定一个由空格分割单词的句子 S。每个单词只包含大写或小写字母。# 我们要将句子转换为 “Goat Latin”(一种类似于 猪拉丁文 - Pig Latin 的虚构语言)。# 山羊拉丁文的规则如下:# 如果单词以元音开头(a, e, i, o, u),在单词后添加"ma"。# 例如,单词"apple"变为"applema"。# 如果单词以辅音字母开头(即非元音字母),移除第一个字符并将它放到末尾,之后再添加"ma"。# 例如,单词"goat"变为"oatgma"。# 根据单词在句子中的索引,在单词最后添加与索引相同数量的字母‘a‘,索引从1开始。# 例如,在第一个单词后添加"a",在第二个单词后添加"aa",以此类推。# 返回将 S 转换为山羊拉丁文后的句子。# 示例 1:# 输入: "I speak Goat Latin"# 输出: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"# 示例 2:# 输入: "The quick brown fox jumped over the lazy dog"# 输出: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"#meclass Solution(object):    def toGoatLatin(self, S):        resultlist = []        for i,s in enumerate(S.split(‘ ‘)):            if s[0] in [‘a‘, ‘e‘, ‘i‘, ‘o‘, ‘u‘, ‘A‘, ‘E‘, ‘I‘, ‘O‘, ‘U‘]:                s += ‘ma‘            else:                s = s[1:]+s[0]                s += ‘ma‘            s += ‘a‘*(i+1)            resultlist.append(s)        return ‘ ‘.join(resultlist)
*80.思路:利用子集来进行判断A.issubset(B)# 我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。# 如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。# 现在我们有一个正整数 N, 计算从 1 到 N 中有多少个数 X 是好数?# 示例:# 输入: 10# 输出: 4# 解释:# 在[1, 10]中有四个好数: 2, 5, 6, 9。# 注意 1 和 10 不是好数, 因为他们在旋转之后不变。#meclass Solution(object):    def rotatedDigits(self, N):        allnum = {0, 1, 8, 2, 5, 6, 9}        k = 0        for n in range(N+1):            n_nums = set([int(i) for i in str(n)])            if n_nums.issubset(allnum) and not n_nums.issubset({0,1,8}):                k+=1        return k


原文地址:https://www.cnblogs.com/xhw19950606/p/12008650.html

时间: 2024-10-04 09:59:35

Leetcode简单题61~80的相关文章

leetcode 简单题

堆 (leetcode 703) 数据流中的第k大元素 利用小顶堆 class KthLargest: def __init__(self, k: int, nums: List[int]): self.k = k self.size = len(nums) self.nums = nums heapq.heapify(self.nums) while self.size > k: heapq.heappop(self.nums) self.size -= 1 def add(self, val

Leetcode简单题41~60

41.思路:分别在列表中存放两个单词的索引,再用两次遍历求距离# 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离.# 示例:# 假设 words = ["practice", "makes", "perfect", "coding", "makes"]# 输入: word1 = “coding”, word2 = “practice”# 输出: 3# 输入: wo

【leetcode 简单】第十七题 二进制求和

实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842...,   由于返回类型是整数,小数部分将被舍去. #define PF(w) ((w)*(w)) int mySqrt(int x) { int start = 0; int end = x; double mid = 0; i

【leetcode 简单】 第七十题 有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" 输出: true 示例 2: 输入: s = "rat", t = "car" 输出: false 说明: 你可以假设字符串只包含小写字母. 进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况? class Solution:

【leetcode 简单】 第七十一题 二叉树的所有路径

给定一个二叉树,返回所有从根节点到叶子节点的路径. 说明: 叶子节点是指没有子节点的节点. 示例: 输入: 1 / 2 3 5 输出: ["1->2->5", "1->3"] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x

【leetcode 简单】 第七十七题 单词模式

给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式. 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应模式. 示例1: 输入: pattern = "abba", str = "dog cat cat dog" 输出: true 示例 2: 输入:pattern = "abba", str = "dog cat cat fish&

【leetcode 简单】 第九十六题 最长回文串

给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意: 假设字符串的长度不会超过 1010. 示例 1: 输入: "abccccdd" 输出: 7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7. class Solution(object): def longestPalindrome(self, s): &quo

【leetcode 简单】 第九十一题 找不同

给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. 示例: 输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母. class Solution(object): def findTheDifference(self, s, t): """ :type s: str :type t: str :

leetcode刷题--两数之和(简单)

一.序言 第一次刷leetcode的题,之前从来没有刷题然后去面试的概念,直到临近秋招,或许是秋招结束的时候才有这个意识,原来面试是需要刷题的,面试问的问题都是千篇一律的,只要刷够了题就差不多了,当然你的基础也要扎实,毕竟在技术面的时候很容易露馅的. 所以奉劝各位还未毕业,在大三或大二的师弟师妹早点刷题,心里也有底气进入求职大军,毕竟大四开始刷题的话时间上有些太紧了,推荐刷题的话就是牛客和leetcode. 回归正题,这次记录的是leetcode刷的第一题--两数之和. 二.审题 审题真的很重要