当前位置: 首页 > news >正文

用可视化学习逆置法

1.逆置法思路

目标:将这个彩色数组向右旋转3步

🔴1 → 🟠2 → 🟡3 → 🟢4 → 🔵5 → 🟣6 → ⚪7

我们希望得到

🔵5 → 🟣6 → ⚪7 → 🔴1 → 🟠2 → 🟡3 → 🟢4

接下来我们用可视化的方式来描述逆置法的过程。

步骤1:整体大翻转

想象把整个数组完全倒过来排列:

【原始数组】
🔴1 → 🟠2 → 🟡3 → 🟢4 → 🔵5 → 🟣6 → ⚪7【把每个数和它对应的位置互换】
⚪7 ← 🟣6 ← 🔵5 ← 🟢4 ← 🟡3 ← 🟠2 ← 🔴1

步骤2:前三个数字再翻转

现在,只翻转前三个数字(K=3):

【当前数组】
⚪7 → 🟣6 → 🔵5 → 🟢4 → 🟡3 → 🟠2 → 🔴1【把前3个数互换位置】
🔵5 → 🟣6 → ⚪7 → 🟢4 → 🟡3 → 🟠2 → 🔴1

 第二步完成:前3个数字排序正确了!

步骤3:剩余的四个数字也翻转

最后,翻转剩下的4个数字:

【当前数组】
🔵5 → 🟣6 → ⚪7 → 🟢4 → 🟡3 → 🟠2 → 🔴1【把后4个数互换位置】
🔵5 → 🟣6 → ⚪7 → 🔴1 → 🟠2 → 🟡3 → 🟢4

第三步完成:所有数字都排序正确了!

最终结果:

🔵5 → 🟣6 → ⚪7 → 🔴1 → 🟠2 → 🟡3 → 🟢4

2.交换过程

让我们来看看第一步的交换是如何发生的:

原始:  🔴1  🟠2  🟡3  🟢4  🔵5  🟣6  ⚪7
位置:   0    1    2    3    4    5    6第一个交换:  🔴1 ↔ ⚪7[⚪7   🟠2  🟡3  🟢4  🔵5  🟣6  🔴1]第二个交换:  🟠2 ↔ 🟣6[⚪7   🟣6  🟡3  🟢4  🔵5  🟠2  🔴1]第三个交换:  🟡3 ↔ 🔵5[⚪7   🟣6  🔵5  🟢4  🟡3  🟠2  🔴1]最后一个交换: 🟢4 ↔ 🟢4 (中间元素与自己交换,不变)结果:   [⚪7   🟣6  🔵5  🟢4  🟡3  🟠2  🔴1]

3.为什么这个方法有效?

把数组想象成两部分: 

部分A: 🔴1 🟠2 🟡3 🟢4
部分B: 🔵5 🟣6 ⚪7

我们的目标是交换这两部分:

部分B + 部分A: 🔵5 🟣6 ⚪7 🔴1 🟠2 🟡3 🟢4

三步法魔术 

1. 整体翻转:(A+B)反转 = B反转+A反转

🔴1🟠2🟡3🟢4🔵5🟣6⚪7 → ⚪7🟣6🔵5🟢4🟡3🟠2🔴1

 2.前K个翻转:B反转再反转 = B正常

⚪7🟣6🔵5🟢4🟡3🟠2🔴1 → 🔵5🟣6⚪7🟢4🟡3🟠2🔴1

 3.后(N-K)个翻转:A反转再反转 = A正常

🔵5🟣6⚪7🟢4🟡3🟠2🔴1 → 🔵5🟣6⚪7🔴1🟠2🟡3🟢4

最终得到:B + A 完成!

记忆口诀

📌 全部翻转 → 📌 前K个翻转 → 📌 剩余(后N-K个)翻转 = 🎉 旋转成功!

这样,我们就可以得到逆置需要使用的函数了:

翻转工具函数

// 🛠️ 翻转工具函数
void reverse(int* nums, int start, int end) {while (start < end) {// 🔄 交换两个位置的积木int temp = nums[start];nums[start] = nums[end];nums[end] = temp;// 👉👈 两边向中间移动start++;end--;}
}


 

相关文章:

  • 基于LangChain 实现 Advanced RAG-后检索优化(上)-Reranker
  • 如何提升个人的思维能力?
  • 人工智能:如何快速筛选出excel中某列存在跳号的单元格位置?
  • C++ 中的继承
  • scikit-learn在监督学习算法的应用
  • WEB前端小练习——记事本
  • 多端定制系统开发:打造高效全平台覆盖的APP解决方案
  • 004 树与二叉树:从原理到实战
  • 「Mac畅玩AIGC与多模态16」开发篇12 - 多节点串联与输出合并的工作流示例
  • C++调试(叁):编译qBreakpad并使用其生成Dump文件
  • 解决Maven项目中报错“java不支持版本6即更高的版本 7”
  • 代码随想录算法训练营Day43
  • 单片机嵌入式CAN库
  • Linux第20节 --- inode和文件系统
  • 【2025软考高级架构师】——未来信息综合技术(11)
  • C++笔记-多态(包含虚函数,纯虚函数和虚函数表等)
  • 基于PyTorch的食物图像分类实战:从数据处理到模型训练
  • 61常用控件_QDateTimeEdit的使用
  • 【LeetCode Hot100】贪心篇
  • Python基本语法(函数partial)
  • 澎湃读报丨央媒头版五四青年节集中刊文:以青春之我,赴时代之约
  • 在“蟑螂屋”里叠衣服,我看见人生百态
  • 首次面向上海、江苏招收本科生,西湖大学接连发布招生简章
  • 五一当天1372对新人在沪喜结连理,涉外婚姻登记全市铺开
  • 五一“大车流”来了,今日午后G40沪陕高速开始迎来出沪高峰
  • 事关广大农民利益,农村集体经济组织法5月1日起施行