首页 > 其他分享 >leetcode 常见题型代码总结

leetcode 常见题型代码总结

时间:2024-07-01 19:42:39浏览次数:19  
标签:node 题型 偷窃 nums int 代码 ret return leetcode

  1. 二分查找
class Solution(object):
    def search(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: int
        """
        left, right = 0, len(nums)-1
        while left <= right:
            mid = left + (right-left)//2
            if nums[mid] == target:
                return mid
            if target > nums[mid]:
                left = mid + 1
            else:
                right = mid - 1
        return -1
  1. 动态规划(打家劫舍)

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

示例 1:

输入:[1,2,3,1]
输出:4
解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
     偷窃到的最高金额 = 1 + 3 = 4 。
class Solution(object):
    def rob(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        n = len(nums)
        if n<=2:
            return max(nums)
        # f(n) = max(f(n-2) + nums[n-1], f(n-1))
        dp = [0] * (n+1)
        dp[1] = nums[0]
        for i in range(2, n+1):
            dp[i] = max(dp[i-2]+nums[i-1], dp[i-1])
        return dp[-1]
  1. 二叉树遍历
    前序遍历:中左右
    中序遍历: 左中右
    后序遍历:左右中
class Solution(object):
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        if not root:
            return []
        res = []
        
        def dfs(node, ret):
            if not node:
               return
            dfs(node.left, ret)
            ret.append(node.val)
            dfs(node.right, ret)
        
        dfs(root, res)
        return res

标签:node,题型,偷窃,nums,int,代码,ret,return,leetcode
From: https://www.cnblogs.com/marsggbo/p/18278685

相关文章

  • TypeScript一些特性让代码更优雅
    TypeScript不仅仅是JavaScript的类型超集,它还提供了一系列强大的高级特性,可以显著提高代码的质量和可维护性,掌握TypeScript的这些高级功能,不仅可以让你的代码更加健壮,还能大大提升你的开发效率。赶紧来看看吧!一、深入理解TypeScript的高级类型推断TypeScript的类型推断系......
  • 前端页面防止它人代码调试
    今天分享一段JS 代码片段,是防止代码被调试或篡改的基础。老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!(()=>{function ban(){   setInterval(()=>{debugger;}, 50);   try {      ban();   } catch(err){}}ban();})(......
  • Day61 代码随想录打卡|回溯算法篇---组合优化
    本篇是针对上一题的优化,因为在计算所有可能的组合结果时,不是每一条路径都是我们需要遍历的,如图,当n和k都为4的时候,其实最终的结果只有一个[1,2,3,4]是符合结果的。因此我们遍历的时候就不需要遍历每一条边,而是只需要沿着1,2,3,4的路径直接下来即可。那么我们怎么控制循环变量使得......
  • 给下拉框写cs代码
    protectedoverridevoidOnLoad(EventArgse){base.OnLoad(e);Control.Click+=Control_Click;container.DataChanged+=container_DataChanged;Control0.Click+=Control0_Click;stringsql1=@"selectmfgord......
  • Leetcode秋招冲刺(专题10--12)
    专题10:动态规划题目509:斐波那契数(NO)解题思路:动态五部曲动态五部曲:这里我们用一个一维数组来保存递归的结果确定dp数组以及下标的含义dp[i]的定义为:第i个数的斐波那契数值是dp[i]确定递推公式这道题已经把递推公式直接给了:状体转移方程dp[i]=dp[i-1]+dp[i-2];dp数......
  • [开源分享]好用的在线客服系统 PHP客服系统源码 聊天源码(开源代码+终身使用+安装教程
    源码介绍PHP在线客服系统源码采用全新UI,重新设计前端界面,后台采用php+mysql,免费开源源码。在线客服系统已成为企业与客户之间沟通的重要渠道。通过在线客服系统,企业可以方便地与客户进行实时沟通和解决问题,提升客户满意度。php客服系統源码主要功能要求:全新UI自动回复和机器......
  • 代码随想录算法训练营第四十三天 | 52.携带研究材料 518.零钱总和II 377.组合总和IV 7
    完全背包有N件物品和一个最多能被重量为W的背包,第i间物品的重量为weights[i],价值为value[i],每件物品都有无限个,求解将哪些物品装入背包里,物品价值总和最大遍历顺序:纯完全背包问题(即求装满背包后的最大价值)先遍历背包先遍历物品都是可以的和零一背包求解的最大不同就是遍历顺序......
  • sourcetree使用ssh拉取代码报错?看下是不是ssh客户端的问题以及相应的解决方案看这里~~
    相信很多软件开发的同学都很熟悉sourcetree,如果也有同学在使用过程中出现ssh拉取代码出现如下报错的问题这里比较头疼的是没法交互输入y确认缓存秘钥。Theserver'shostkeyisnotcachedintheregistry.Youhavenoguaranteethattheserveristhecomputeryouthi......
  • LeetCode //Bash - 194. Transpose File
    194.TransposeFileGivenatextfilefile.txt,transposeitscontent.Youmayassumethateachrowhasthesamenumberofcolumns,andeachfieldisseparatedbythe’’character. Example:Iffile.txthasthefollowingcontent:nameagealice21......
  • 代码随想录算法训练营第四十二天 | 1049最后一块石头的重量II 494.目标和 474.一和零
    1049.最后一块石头的重量题目链接文章讲解视频讲解解题思路:  将石头尽量分为相等的两堆,两堆最差即为所求结果  石头的重量就是石头的价值动规五部曲:dp[j]:表示背包容量为j时可以装的石头的总价值递推公式:dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]初始化:均......