第 113 场力扣夜喵双周赛
使数组成为递增数组的最少右移次数
直接从最小值开始判断数组是否递增,或者可以找到第一个递减的位置,然后再判断数组是否递增(因为如果数组满足条件,则其最多只有一个递减段)。
1 | class Solution { |
删除数对后的最小数组长度
贪心,比赛时我是用双指针做的,前半部分和后半部分进行匹配(当时边界想了很久,真笨!)。其他做法,参考题解:【小羊肖恩】数学 + 贪心:解决较长数组脑筋急转弯问题的关键。(因为 HashMap
很慢,所以用双指针会更快。)
方法一:贪心
1 | class Solution { |
方法二:贪心 + 数学
1 | class Solution { |
统计距离为 k 的点对
枚举 \(x_{1}\oplus x_{2}\) 的值为 \(p\),可以得到 \(y_{1}\oplus y_{2}\) 的值为 \(k-p\)。可以使用 HashMap
对前缀中的值计数来求解,需要注意循环的顺序,如果调换顺序会使代码变复杂,会花费更多的时间计算答案。
1 | class Solution { |
可以到达每一个节点的最少边反转次数
换根 DP,关键是要想到建立反向边,并为边添加相应的边权。
1 | class Solution { |
第 113 场力扣夜喵双周赛