https://www.nowcoder.com/discuss/71505?type=2&order=0&pos=22&page=1 题目来源 头条 一面编程题 翻转二叉树  Leetcode 226. Invert Binary Tree class Solution(object):     def invertTree(self, root):         """         :type root: TreeNode         :rtype: TreeNode         """         if root:               root.left, root.right = self.invertTree(root.right), self.invertTree(root.left)           return root   最大连续子串和  Leetcode 53. Maximum Subarray class Solution(object):     def maxSubArray(self, nums):         """         :type nums: List[int]         :rtype: int         """         if nums == []: return 0         dp = ret= nums[0]         for i in range(1,len(nums)):             dp = max(dp+nums[i],nums[i])             ret = max(ret,dp)         return ret 二面编程题 给一棵边权树树找到最大路径 可以先考虑不带权值的 Leetcode 543. Diameter of Binary Tree 最大路径实际上可以转化为求叶子节点之间的最长距离 class Solution(object):     def diameterOfBinaryTree(self, root):         self.diameter = 0         self.depth(root)         return self.diameter      def depth(self,root):         if not root: return 0         left = self.depth(root.left)         right = self.depth(root.right)         self.diameter = max(self.diameter,left+right)         return max(left,right)+1 其实带权值和不带权值的区别在于不带权值的树其实权值为1 需要修改的点在  self.diameter = max(self.diameter,left+right+root.lweight+root.rweight) return max(left+root.lweight,right+root.rweight) 三面编程题 给一个字符串和单词列表,判断字符串能不能由这些单词组成 Leetcode 139 Word Break 思路是用数组dp,dp[i] 表示 字符串 s[:i+1] 能否由单词列表中的单词组成 那么可以得到 dp[i] = dp[j] and (s[j:i+1]  in wordlist) for j in j in range(i) class Solution(object):     def wordBreak(self, s, wordDict):         """         :type s: str         :type wordDict: List[str]         :rtype: bool         """         worddict = {}         for word in wordDict:             worddict[word] = True         dp = [True]+[False for i in s]         for i in range(len(s)):             for j in range(i+1):                 if s[j:i+1] in worddict and dp[j]==True:                     dp[i+1] = True                     break         return dp[-1] 股票买卖问题可以参见 https://blog.csdn.net/tinkle181129/article/details/79506010 Leetcode 121. Best Time to Buy and Sell Stock 贪心思想 class Solution(object):   def maxProfit(self, prices):   if prices == []: return 0 minNum,ret = prices[0],0 for p in prices: minNum = min(minNum,p) ret = max(ret,p-minNum) return ret
点赞 1

相关推荐

牛牛不会牛泪:脉脉太多这种了,纯水军
点赞 评论 收藏
分享
自来熟的放鸽子能手面...:这个不一定,找hr跟进一下
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务