Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594

[LeetCode]刷题记录 2021.02

Posted on 2022-10-23 10:14 Uriel 阅读(39) 评论(0)  编辑 收藏 引用 所属分类: 闲来无事重切Leet Code

2021.02.01

AC

Easy

345,349,350,367,374,383,387,392


2021.02.05

AC
Easy

401,404,405,409,414


2021.02.06

AC

Easy

415,434


2021.02.07

AC

Easy

441,453



题目分类

345. Reverse Vowels of a String 字符串中的元音字母翻转,注意大小写是不同的

先用idx = [i for i,x in enumerate(s) if x == 'a' or x == 'e' or x == 'i' or x == 'o' or x == 'u' or x == 'A' or x == 'E' or x == 'I' or x == 'O' or x == ‘U’]找出所有元音位置然后左右两个游标


349. Intersection of Two Arrays 判断两个列表的重合元素,要求去重

解法一:利用python的dict

解法二:利用python的set

nums1 = set(nums1)

        nums2 = set(nums2)

        return list(nums1&nums2)

解法三:sort nums2,然后每次二分查找


350. Intersection of Two Arrays II 判断两个列表的重合元素,不要去重

解法一:利用python的dict


367. Valid Perfect Square 判断一个数字是否是平方数

解法一:二分

解法二:纯数学,O(1),fast inverse square root implementation from Quake III Arena

解法三:利用平方数性质,n= 1+3+5+…+(i+2)


374. Guess Number Higher or Lower 1~n,猜选定了哪个数,调用guess(mid)判断大了还是小了,简单二分


383. Ransom Note 判断字符串A是否能由B中字符构成,类似350


387. First Unique Character in a String 判断字符串中第一个只出现了一次的字符是哪个,python的dict使用


392. Is Subsequence 判断s是否是t的字串(不用连续),两个游标


401. Binary Watch 手表上用10个bit表示时间,问num个灯亮的时候可能有几种时间可能性,枚举0-2^10,用python的bin(i).count(‘1’)判断对应的二进制数有几个1,注意判断小时<12,分钟<60


404. Sum of Left Leaves 计算一棵树所有左叶子结点的值之和,简单DFS,注意递归的时候用一个变量标记是不是左叶子


405. Convert a Number to Hexadecimal 十进制数转十六进制,注意负数特殊处理


409. Longest Palindrome 给定一个字符串,用其中的字符能组成的最长回文字符串多长?除了最中间的可能为单独字符,其他成对出现,先用python 的dict统计,然后简单数学


412. Fizz Buzz 简单模拟


414. Third Maximum Number 求第三大的数,注意去重(先转set再转list)以及小于三个数的情况


415. Add Strings 模拟大数加法


434. Number of Segments in a String 判断一个字符串里面有几个单词(可能有前导0,后导0,连续多个0,整个字符串空串)


441. Arranging Coins 给定n,问1+2+。。k<=n的k

        l = 1

        r = n

        while l < r:

            mid = math.ceil((l + r) / 2)

            if mid * (mid + 1) == 2 * n:

                return int(mid)

            if mid * (mid + 1) > 2 * n:

                r = mid - 1

            else:

                l = mid

        return int(l)


448. Find All Numbers Disappeared in an Array 一个数组里一些数字出现两次,其他出现一次,问哪些数字没出现过,利用-1标记出现过的数字

        for i in range(0, len(nums)):

            if nums[abs(nums[i]) - 1] > 0:

                nums[abs(nums[i]) - 1] *= -1

        for i in range(0, len(nums)):

            if nums[i] > 0:

                res.append(i + 1)


453. Minimum Moves to Equal Array Elements 一串数字,每次让其中n-1个加1,问一共几次能让所有数变成相同值,数学题

        t = min(nums)

        for i in nums:

            res += i - t


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理