美文网首页
每日Leetcode—算法(5)

每日Leetcode—算法(5)

作者: Chuck_Wu | 来源:发表于2019-04-22 12:50 被阅读0次

35. 搜索插入位置

示例 1:

输入: [1,3,5,6], 5,输出: 2
输入: [1,3,5,6], 2,输出: 1
输入: [1,3,5,6], 7,输出: 4

算法一:

def searchInsert(self, nums: List[int], target: int) -> int:
    if nums[0]>target:
        return 0
    if nums[len(nums)-1]<target:
        return len(nums)-1
    for i in range(len(nums)):
        if target == nums[i]:
            return i
        if nums[i]<target and target<nums[i+1]:
            return i+1

算法二:

lo = 0
hi = len(nums)-1
while lo<hi:
    mid = lo + (hi - lo)//2
    if nums[mid] < target:
        lo = mid + 1
    elif nums[mid] > target:
        hi = mid
    else:
        return mid
return lo

分析:该方法用了二分查找,时间复杂度为O(logN)

38.报数

  1. 1
    
  2. 11
    
  3. 21
    
  4. 1211
    
  5. 111221
    

例如第一项为1,第二项有一个1,故写做11;第二项有两个1,故写做21......以此类推。

示例:

输入: 4,输出: "1211"

算法:

def countAndSay(self, n: int) -> str:
    if n == 1:
        return '1'
    if n == 2:
        return '2'
    pre = '11'
    for i in range(3,n+1):      #循环到n,实现第n次报数
        cou = 1
        res = ''
        for j in range(1,len(pre)):     #对上一次报数循环查看并报数
            if pre[j-1] == pre[j]: 
                cou+=1                #如果相等计数变量加一
            else:
                res+=str(cou)+pre[j-1]        #不相等将计数、数字添加到结果里
                cou = 1             #计数变量还原为1
        res += str(cou)+pre[j]         #将最后一个数添加到结果里
        pre = res         #结果赋值给pre,并进行循环。
    return pre

相关文章

  • Swap Nodes in Pairs

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Swap Nodes in ...

  • Combination Sum II

    标签: C++ 算法 LeetCode DFS 每日算法——leetcode系列 问题 Combinatio...

  • Divide Two Integers

    标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Divide Two Integ...

  • First Missing Positive

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 First Missing...

  • Valid Sudoku

    Valid Sudoku 标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Val...

  • Next Permutation

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Next Permuta...

  • Trapping Rain Water

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Trapping Rain...

  • Combination Sum

    标签: C++ 算法 LeetCode 数组 DFS 每日算法——leetcode系列 问题 Combinat...

  • Remove Nth Node From End of List

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Remove Nth Nod...

  • Merge k Sorted Lists

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Merge Two Sort...

网友评论

      本文标题:每日Leetcode—算法(5)

      本文链接:https://www.haomeiwen.com/subject/lgvegqtx.html