• 算法题 week4


    35# 搜索插入位置

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

    思路:遍历数组,找到目标值或发现第一个大于目标值的值,则返回当前位置,未找到则返回数组长度

    class Solution {
        public int searchInsert(int[] nums, int target) {
            int i = 0;
            while(i<nums.length){
                if(nums[i]>=target){
                    return i;
                }
                i = i+1;
            }
            return nums.length;
        }
    }

    py3:

    class Solution:
        def searchInsert(self, nums: List[int], target: int) -> int:
            flag = 0
            for num in nums:
                flag+=1
                if num>=target:
                    return flag
            return len(nums)

    看到评论区的一个另一种方式,要学会使用函数

    class Solution:
        def searchInsert(self, nums: List[int], target: int) -> int:
            if target in nums:
                return nums.index(target)
            else:
                nums.append(target)
                nums.sort()
                return nums.index(target)

    38# 报数

    报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:

    1. 1
    2. 11
    3. 21
    4. 1211
    5. 111221
    1 被读作  "one 1"  ("一个一") , 即 11。
    11 被读作 "two 1s" ("两个一"), 即 21。
    21 被读作 "one 2",  "one 1" ("一个二" ,  "一个一") , 即 1211。

    给定一个正整数 n(1 ≤ n ≤ 30),输出报数序列的第 n 项。

    注意:整数顺序将表示为一个字符串。

     太难了,没看懂,题解代码先贴这,钻研一下。

    from itertools import groupby
    
    class Solution:
        def countAndSay(self, n: int) -> str:
            result = '1'
            for i in range(1, n):
                result = ''.join([str(len(list(g))) + k for k, g in groupby(result)])
            return result
  • 相关阅读:
    实用产品规划
    产品经理对用户的调研
    产品经理用户研究
    竞品分析方案
    产品竞品分析
    Mybatis Plus
    shiro
    Spring cloud
    Spring Boot
    Redis入门(二)
  • 原文地址:https://www.cnblogs.com/XinL-blog/p/11637961.html
Copyright © 2020-2023  润新知