当前位置:网站首页>情侣牵手[贪心 & 抽象]
情侣牵手[贪心 & 抽象]
2022-08-04 23:36:00 【REN_林森】
前言
贪心是考察分析能力的好题,尤其是带干扰性的,即需要我们将有用信息提取,去伪存真,将问题能够抽象出来。动态规划也是一样,如果没有抽象思维提取要害信息,则定义不出状态,自然也找不到状态如何转移。当然阅读理解题/脑筋急转弯,就更需要这种抽象有用信息的能力。
一、情侣牵手

二、贪心&抽象
package everyday.hard;
// 情侣牵手。
public class MinSwapsCouples {
/* 抽象思维:其实我们并不关心1/2/3...这些位置,我们只关心特殊的相邻关系<0,1><2,3>。 那么一对特殊位置<x,y>,有2种情况。一是情侣则不管;二不是情侣,可以换走1个人,也可换走2个人。 由于我们只关心相邻位置,即把两对情侣的男生换掉,换个角度看,其实也可看成把两个女生换掉,所以我们在乎的是相邻对,而不是特别的位置。 所以,根据贪心,换1人的做法是最好的,留下一个人,就少换一次。 */
public int minSwapsCouples(int[] row) {
int cnt = 0;
for (int i = 0; i < row.length; i += 2) {
int target = (row[i] & 1) == 0 ? row[i] + 1 : row[i] - 1;
if (target == row[i + 1]) continue;
findAndSwap(row, i + 1, target);
cnt++;
}
return cnt;
}
private void findAndSwap(int[] row, int begin, int target) {
int i = begin + 1;
while (i < row.length && target != row[i]) ++i;
row[i] = row[begin];
row[begin] = target;
}
}
总结
1)多练习贪心题,锻炼分析能力 & 信息加工能力 & 信息提取与转换能力。
参考文献
[1] LeetCode 情侣牵手
边栏推荐
- 为何越来越多人选择进入软件测试行业?深度剖析软件测试的优势...
- Community Sharing|Tencent Overseas Games builds game security operation capabilities based on JumpServer
- 2022/8/4 树上差分+线段树
- The role of @Async annotation and how to implement asynchronous listening mechanism
- Flutter启动流程(Skia引擎)介绍与使用
- PID Controller Improvement Notes No. 7: Improve the anti-overshoot setting of the PID controller
- Linear DP (bottom)
- 【字符串函数内功修炼】strlen + strstr + strtok + strerror(三)
- 【内存操作函数内功修炼】memcpy + memmove + memcmp + memset(四)
- MySQL基础篇【子查询】
猜你喜欢

入门3D游戏建模师知识必备

话题 | 雾计算和边缘计算有什么区别?

I was rejected by the leader for a salary increase, and my anger rose by 9.5K after switching jobs. This is my mental journey

MySQL基础篇【聚合函数】

MySQL增删改查基础

三、实战---爬取百度指定词条所对应的结果页面(一个简单的页面采集器)

使用代理对象执行实现类目标方法异常

【CVA估值训练营】财务建模指南——第一讲

3年,从3K涨薪到20k?真是麻雀啄了牛屁股 — 雀食牛逼呀

Uniapp dynamic sliding navigation effect demo (finishing)
随机推荐
OpenCV:10特征检测
Bidding Announcement | Operation and Maintenance Project of Haina Baichuang Official Account
Ab3d.PowerToys and Ab3d.DXEngine Crack
MYS-6ULX-IOT 开发板测评——使用 Yocto 添加软件包
NebulaGraph v3.2.0 Release Note,对查询最短路径的性能等多处优化
一、爬虫基本概念
Service Mesh landing path
招标公告 | 海纳百创公众号运维项目
Laravel 实现redis分布式锁
对写作的一些感悟
建模师经验分享:模型学习方法
Uniapp dynamic sliding navigation effect demo (finishing)
当panic或者die被执行时,或者发生未定义指令时,如何被回调到
PZK学C语言之字符串函数(一)
深度|医疗行业勒索病毒防治解决方案
年薪50W+的测试工程师都在用这个:Jmeter 脚本开发之——扩展函数
uniapp横向选项卡(水平滚动导航栏)效果demo(整理)
[Cultivation of internal skills of memory operation functions] memcpy + memmove + memcmp + memset (4)
「津津乐道播客」#397 厂长来了:怎样用科技给法律赋能?
Kernel函数解析之kernel_restart