华为od笔试题 给定一组闭区间,其中合部分存在交集 满分
时间: 2023-08-08 08:02:05 浏览: 74
给定一组闭区间,我们需要找到这些区间中的交集部分。
首先,我们可以对这些闭区间按照起始点进行排序。然后,我们可以使用一个变量表示当前的交集,初始值为第一个闭区间。接着,我们遍历剩余的闭区间,与当前的交集进行比较。
如果当前闭区间与交集没有交集,则说明这部分闭区间与前面的区间都没有交集,我们可以将当前闭区间作为新的交集,继续比较下一个闭区间。
如果当前闭区间与交集有交集,我们需要更新交集的起始点和结束点。起始点取当前闭区间起始点和交集起始点中的较大值,结束点取当前闭区间结束点和交集结束点中的较小值。这样,我们可以保证交集是当前闭区间与前面所有闭区间的公共部分。
最后,我们可以得到所有闭区间的交集。
以下是一个示例:
给定闭区间:[1, 5],[3, 7],[2, 6]
首先,按照起始点对闭区间进行排序:[1, 5],[2, 6],[3, 7]
初始交集设置为第一个闭区间:[1, 5]
然后,遍历剩余的闭区间:
与交集有交集,更新交集为[2, 5]
与交集有交集,更新交集为[3, 5]
最终,得到交集为[3, 5]。
通过上述方法,我们可以找到给定一组闭区间中的交集部分。
相关问题
华为od笔试题 区间交集,给定一组闭区间,其中部分区间存在交集,如[]1,2,[2,3)]
区间交集问题可以通过比较区间的边界来解决。首先,我们需要对给定的闭区间按照起始点进行排序。排序后,我们可以遍历区间列表,比较当前区间的结束点与下一个区间的起始点。
如果当前区间的结束点小于下一个区间的起始点,说明两个区间没有交集,我们可以跳过下一个区间,继续比较下一个区间。
如果当前区间的结束点大于等于下一个区间的起始点,说明存在交集。我们可以将当前区间的结束点更新为下一个区间的结束点,以保留交集的部分。
最后,我们得到的区间即为所有区间的交集。
以题目给出的示例区间[]1,2,[2,3)]为例,排序后的区间为[]1,2,[2,3)]。比较第一个区间和第二个区间,发现第一个区间的结束点2大于等于第二个区间的起始点2,存在交集。于是,我们更新第一个区间的结束点为3,得到的交集区间为[]1,3)。
因此,题目给定的闭区间的交集为[]1,3)。
华为od笔试题python
华为OD笔试题是关于使用动态规划解决工作报酬问题的。给定工作总时长t,工作数量n,工作时间数组time和工作报酬数组earnings,需要选择一些工作使得总时长不超过t,并且获得最大的报酬。
有两种解法可以解决这个问题。解法1是使用二维dp数组,解法2是使用一维dp数组进行优化。
解法1中,我们创建一个二维dp数组,dp\[i\]\[j\]表示在前i个工作中,总时长不超过j的情况下能获得的最大报酬。然后使用两层循环遍历工作和时长,根据状态转移方程dp\[i\]\[j\] = max(dp\[i-1\]\[j\], dp\[i-1\]\[j-time\[i-1\]\] + earnings\[i-1\])来更新dp数组。最后返回dp\[-1\]\[-1\]即为最大报酬。
解法2是对解法1的优化,使用一维dp数组。我们只需要保存上一行的dp值,然后从后向前遍历时长,根据状态转移方程dp\[j\] = max(dp\[j\], dp\[j-time\[i-1\]\] + earnings\[i-1\])来更新dp数组。最后返回dp\[-1\]即为最大报酬。
以上是关于华为OD笔试题的解答。
#### 引用[.reference_title]
- *1* *3* [华为OD笔试题:工作安排 --- 100分 (思路+python代码)](https://blog.csdn.net/m0_69258561/article/details/130973186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [【100%通过率】华为OD机试真题 Python 实现【分奖金】【2022.11 Q4 新题】](https://blog.csdn.net/misayaaaaa/article/details/128420154)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]