主页 > imtoken1.0钱包下载 > 酒店每个房间的收入如何计算,和朋友合租两房一厅
酒店每个房间的收入如何计算,和朋友合租两房一厅
事实上,这是相当公平的。可以参考链家旗下的紫茹屋,两房一厅的房子,两房的价格不会相差太大(主卧,次卧怎么算我买入btc的平均价格,房间朝向会略有不同),不管每个房间住多少人,水电煤气费应该按房间数平摊,按人数计算比较合理,我看不占便宜你的。
唯一能让你感到平衡的事情就是找到一个人。
python中的LeetCode——动态编程
这部分是一个动态规划的算法问题。
5. 最长回文子串
给定一个字符串 s,找出 s 中最长的回文子串。您可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"输出: "bb"
想法
动态规划的思想,比如CABAC,如果只有一个字符'B',那么一定是回文,然后看B的两边,如果“ABA”的两边相同,那么这是一个回文;然后看“ABA”的两边。直到左右两边不相等,或者溢出。与之前存储的回文长度进行比较。
考虑两种情况,示例 1 和示例 2。
代码
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ palindrome = "" for i in range(len(s)): len1 = len(self.getPalindrome(s, i, i)) if len1 > len(palindrome): palindrome = self.getPalindrome(s, i, i) len2 = len(self.getPalindrome(s, i, i 1)) if len2 > len(palindrome): palindrome = self.getPalindrome(s, i, i 1) return palindrome def getPalindrome(self, s, l, r): while l >= 0 and r < len(s) and s[l] == s[r]: l -= 1 r = 1 return s[l 1 : r]
53. 最大子阶和
给定一个整数数组 nums ,找到一个和最大的连续子数组(该子数组至少包含一个元素)怎么算我买入btc的平均价格,并返回其最大和。
例子:
输入:[-2,1,-3,4,-1,2,1,-5,4],
输出:6
解释:连续子数组 [4,-1,2,1] 的最大和为 6。
想法
如果数组中的所有整数都是负数,则选择最大的数,因为累积的越多越小。
正负数都需要两个变量,一个是global_max,从全局来看,每次什么组合最大,另一个是local_max,global_max和global_max相比更新。
代码
class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ if max(nums) < 0: return max(nums) local_max, global_max = 0, 0 for i in nums: local_max = max(0, local_max i) global_max = max(global_max, local_max) return global_max
62. 不同的路径
机器人位于 mxn 网格的左上角(起点在下图中标记为“开始”)。
机器人一次只能向下或向右移动一步。机器人试图到达网格的右下角(下图中标记为“完成”)。
Q 总共有多少条不同的路径?
例如,上图是一个 7 x 3 的网格。有多少种可能的路径?
注意:m 和 n 的值都不应超过 100。
示例 1:
输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3. 向下 -> 向右 -> 向右
示例 2:
输入: m = 7, n = 3输出: 28
想法
动态规划问题,一是在一行一列的情况下,只有一招;其他情况=其上方网格的移动次数和左侧网格的移动次数
代码
70. 爬楼梯
假设你正在爬楼梯。您需要 n 步才能到达建筑物的顶部。
每次可以爬 1 或 2 级台阶。您可以通过多少种不同的方式到达建筑物的顶部?
注意:n 是一个正整数。
示例 1:
输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 1 阶2. 2 阶
示例 2:
输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 1 阶 1 阶2. 1 阶 2 阶3. 2 阶 1 阶
想法
对于一个典型的动态规划问题,第n步有两种方式,一种是爬上一步到第n-1步;二是爬两级到第n-2级。
得到动态规划递归:
代码
class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ if n == 1: return 1 if n == 2: return 2 result = [1, 2] for i in range(2,n): result.append(result[i-1] result[i-2]) return result[-1]
121. 买卖股票的最佳时机
给定一个数组,其第 i 个元素是给定股票在第 i 天的价格。
如果您最多只能完成一笔交易(即买卖一只股票),请设计一种算法来计算您可以赚取的最大利润。
请注意,您不能在购买之前出售股票。
示例 1:
输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:
输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
想法:
一个循环,在价格最低时买入,在价格最高时卖出,节省最大利润。
代码:
class Solution(object): def maxProfit(self, prices): """ :type prices: List[int] :rtype: int """ if not prices: return 0 max_prices = 0 min_prices = prices[0] for i in prices: min_prices = min(min_prices, i) max_prices = max(max_prices, i-min_prices) return max_prices
198.家庭抢劫
你是一个专业的小偷,计划在街上偷房子。每个房间都隐藏着一定数量的现金。影响您的盗窃的唯一限制是相邻的房屋配备了相互连接的防盗系统。如果同一晚有小偷闯入相邻的两间房屋,系统会自动报警。
给定一个非负整数数组,表示每所房子的存储量,计算你可以在不触发警报的情况下窃取的最大数量。
示例 1:
输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 3 = 4 。
示例 2:
输入: [2,7,9,3,1]输出: 12解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。 偷窃到的最高金额 = 2 9 1 = 12 。
想法
动态规划思想
本期最大累计收入=max(上期收入,上期收入加上当前收入)
状态转移方程:dp[i] = max(dp[i-1], dp[i-2] nums[i])
代码
class Solution(object): def rob(self, nums): """ :type nums: List[int] :rtype: int """ n = len(nums) if n == 0: return 0 if n == 1: return nums[0] p = nums[0] q = max(nums[0],nums[1]) for i in range(2,n): next_ = max(p nums[i],q) p,q = q, next_ return q
在酒店买房约40万元,承诺每年分红4万元,11年后拿到房子的产权。这是骗子吗?
是的