首页 > 其他 > 详细

[ 周赛总结 ] 第 186 场力扣周赛

时间:2020-04-28 01:11:53      阅读:73      评论:0      收藏:0      [点我收藏+]

总结

1. 

A: 分割字符串的最大得分

  • 算法:这道题蛮简单的,递归穷举所有可能的情况即可
  • 需要改进的地方:递归写的不够优雅,需要改进
  • # 我的代码:
    class
    Solution: def __init__(self): self.ret = -99 def maxScore(self, s: str) -> int: def resolve(i): if i>=len(s): return 0 left = s[:i] right=s[i:] self.ret = max(self.ret , left.count(0)+right.count(1)) resolve(i+1) return 1 resolve(1) return self.ret

 

B:可获得的最大点数

  • 算法:用滑动窗口的思路,保持窗口外有K个数,让滑动窗口从最右边滑到最左边,迭代一个最大点数
  • 需要改进的地方:
  1. 开始一直在思考只拿左边、只拿右边、左右同时拿三种情况,递归没写出来。
  2. 递归思路没有反向思考K的值,K递减到1即为出口
  3. 试试其他思路,比如反向考虑:求滑动窗口内的最小值(相对的窗口外的和就是要求的最大点数);求数组连续最小和;等等
  • class Solution:
        def maxScore(self, nums: List[int], k: int) -> int:
            left=k
            right=0
            ans=-1
            left_total = sum(nums[0:left])
            right_total =0
            while left>=0:
                total = left_total+right_total
                ans = max(ans,total)  
                right+=1
                left-=1
                left_total-=nums[left]
                right_total+=nums[len(nums)-right]
        
            return ans

 

C:对角线遍历 II

  • 算法:哪个鬼才想到的。。。
  1. 找规律,只要在对角线上,那么它的横纵坐标和是相等的,比如示例1

    (0,0),(0,1),(0,2)
    (1,0),(1,1),(1,2)
    (2,0),(2,1),(2,2)
  2. 遍历nums,把横纵坐标相同的元素放在一起作为值,横纵坐标的和作为键。
  3. 排序字典,输出答案。

 

[ 周赛总结 ] 第 186 场力扣周赛

原文:https://www.cnblogs.com/remly/p/12790885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!