力扣刷题记录——231. 2 的幂、228. 汇总区间、242. 有效的字母异位词

本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《231. 2 的幂、228. 汇总区间、242. 有效的字母异位词》。

目录

231. 2 的幂

        题目描述

        解题思路

        解题代码 

228. 汇总区间

        题目描述

        解题思路

        解题代码

 242. 有效的字母异位词

        题目描述

        解题思路

        解题代码


231. 2 的幂

题目描述

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。

示例 1:

输入:n = 1
输出:true
解释:20 = 1

示例 2:

输入:n = 16
输出:true
解释:24 = 16

解题思路

直接暴力循环就可以了,用2的幂次进行匹配,匹配到了就返回True,循环结束还没匹配到,那么返回False。

解题代码 

def isPowerOfTwo(n: int):
    for i in range(0,32):
        if 2**i == n:
            return True
    return False

力扣刷题记录——231. 2 的幂、228. 汇总区间、242. 有效的字母异位词_第1张图片

228. 汇总区间

题目描述

给定一个  无重复元素 的 有序 整数数组 nums 。

返回 恰好覆盖数组中所有数字 的 最小有序 区间范围列表 。也就是说,nums 的每个元素都恰好被某个区间范围所覆盖,并且不存在属于某个范围但不属于 nums 的数字 x 。

列表中的每个区间范围 [a,b] 应该按如下格式输出:

  • "a->b" ,如果 a != b
  • "a" ,如果 a == b

示例 1:

输入:nums = [0,1,2,4,5,7]
输出:["0->2","4->5","7"]
解释:区间范围是:
[0,2] --> "0->2"
[4,5] --> "4->5"
[7,7] --> "7"

示例 2:

输入:nums = [0,2,3,4,6,8,9]
输出:["0","2->4","6","8->9"]
解释:区间范围是:
[0,0] --> "0"
[2,4] --> "2->4"
[6,6] --> "6"
[8,9] --> "8->9"

解题思路

有两个思路吧,第一个还是暴力循环,两两做差,找出不为1的所有索引,根据这个索引将列表切割,实现区间划分。第二个思路是指针,用一个指针来遍历,指针开始时建立一个head,指针所指与下一个指针所指相差不为1的话,建立一个end,head与end为一个区间。由于可能只有一个数所有开始时,也要要直接设置end=0,后面判断end是否发生变化,如果发生变化,说明是一段区间,否则说明没有进入while循环,那么直接在列表中添加这个数就可以了!一次通过!

解题代码

def summaryRanges(nums):
    ind_p = 0
    tar_list = []
    while ind_p <= len(nums)-1:
        head = nums[ind_p]
        end = 0
        while ind_p!= len(nums)-1 and nums[ind_p] +1 == nums[ind_p+1]:
            end = nums[ind_p+1]
            ind_p += 1
        if end == 0:
            # 加首
            tar_str = str(head)
            tar_list.append(tar_str)
        else:
            #加首尾
            tar_str = str(head) + "->" +str(end)
            # print(tar_str)
            tar_list.append(tar_str)
        ind_p+=1

力扣刷题记录——231. 2 的幂、228. 汇总区间、242. 有效的字母异位词_第2张图片

 242. 有效的字母异位词

题目描述

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

解题思路

如果两个字符串是字母异位词的话,他们的字母构成应该是一模一样的,所有排序之后得到的新单词也应该是相等的,所以,只需要将传入进来的s和t进行排序就可以了,比较排序完生成的两个新单词是否是一样的。今天早上的题目还是比较简单的。

解题代码

def isAnagram(s: str, t: str):
    s_list = [i for i in s]
    s_list.sort()
    s_str = "".join(s_list)
    t_list = [i for i in t]
    t_list.sort()
    t_str = "".join(t_list)
    if s_str == t_str:
        return True
    else:
        return False

力扣刷题记录——231. 2 的幂、228. 汇总区间、242. 有效的字母异位词_第3张图片 

你可能感兴趣的:(蓝桥杯刷题,leetcode,算法,职场和发展,蓝桥杯,刷题)