首页 > 编程语言 >双指针算法6

双指针算法6

时间:2024-12-01 11:29:01浏览次数:15  
标签:heaters while 链表 算法 数组 节点 指针

进度:28/100

原题1:

给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。

输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

原题2:

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

原题3:

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。

原题4:

冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。

在加热器的加热半径范围内的每个房屋都可以获得供暖。

现在,给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置,请你找出并返回可以覆盖所有房屋的最小加热半径。

注意:所有供暖器 heaters 都遵循你的半径标准,加热的半径也一样。

1.两个数组的交集--简单

思路:

(1.哈希。用数组存一下两个数组出现过的数的个数,如果有数在两个数组均存在,则放入vector中。

(2.双指针。先给两个数组排序,然后用两个指针分别指向数组前端,谁小谁移指针,相等就放入vector,并且把后面相等的数都去重。

   这里我刚开始用的是while while if(=)然后在数据【1】,【3】那里溢出了,想了一下恍然大悟:第一个while会让指针指到数组外面,那么第二个while就没法与指针指的数比较,就会报错。改成

if(>) else if(<) else(=)就过了。

2.旋转链表--中等

虽然会写,但是难得是一气呵成想+写出来的,还是把思路捋捋。

思路:

把整个链表连成环,然后计数有多少个节点,k转化为k%n,易证第n-k个节点成为了新终点,记下n-k+1个节点为新起点,将n-k个节点指向nullptr。

错在判断特殊情况:当k=t-1时,不进入循环,但新终点为头节点,所以要单独拎出来讨论。

3.分发饼干--简单

思路:

发现双指针类题写while总是容易错,但是一个一个if,else的来就不会错。

4.供暖器--中等

思路:

(1.纯粹的双指针,自己想的。下午写了个代码wrong到倒数第二个数据,想不明白怎么回事出去玩了,深夜搁这改代码,灵机一动加了个等于号做判断条件就过了。不是哥们,为啥呀,没想明白。虽然理论上来讲,加个等号肯定没错。可是不加等号错哪了?是abs没用吗?还是什么鬼

abs(houses[i]-heaters[j])>=abs(houses[i]-heaters[j+1])

哦大师我悟了。评论区一句话:如果heaters数组有重复元素的情况下,指向heaters中元素的指针就会停留在有重复元素的地方,后面的元素就会被忽略了。

(2.二分加双指针。找离当前房屋最近的两个heater,一个在左边一个在右边。

标签:heaters,while,链表,算法,数组,节点,指针
From: https://blog.csdn.net/2301_79742457/article/details/144139538

相关文章

  • cpp智能指针
      普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu......
  • 分类模型:黏菌算法优化支持向量机(SMA-SVM)Matlab
    Matlab分类模型:黏菌算法优化支持向量机(SMA-SVM)%***********************************************************************************************************************************************************************************************************......
  • 使用AI Gallery的订阅算法实现花卉识别
    准备工作注册华为账号并开通华为云、实名认证注册华为账号并开通华为云进行实名认证配置委托访问授权ModelArts使用过程中涉及到OBS、SWR、IEF等服务交互,首次使用ModelArts需要用户配置委托授权,允许访问这些依赖服务。使用华为云账号登录ModelArts管理控制台,在左侧导......
  • 随机森林算法:原理、实现与应用
    一、引言在当今的大数据时代,数据挖掘和机器学习技术在各个领域都发挥着至关重要的作用。其中,随机森林算法作为一种强大的机器学习算法,因其出色的性能和广泛的适用性而备受关注。随机森林算法是一种基于决策树的集成学习算法,它通过构建多个决策树并综合它们的结果来进行预测或......
  • 【机器学习算法】XGBoost原理
    一、基本内容基本内容:GBDT的基础上,在损失函数上加入树模型复杂度的正则项与GBDT一样,也是使用新的弱学习器拟合残差(当前模型负梯度,残差方向)GBDT损失函数\[Loss=\sum_{i=1}^{N}L(y_i,y_i^{t})\]XGboost损失函数\[Loss=\sum_{i=1}^{S}L(y_i,y_i^{t})+\sum_{j=1......
  • 路径规划之启发式算法之一:A-Star(A*)算法
    A*算法是一种启发式搜索算法,常用于解决路径规划问题。一、A*算法的定义与原理        A*算法是一种用于在图形或网格中查找最短路径的算法。它在搜索过程中综合考虑了每个节点的实际距离(g值)和预估距离(h值),以找到最优路径。具体来说,算法通过评价各个节点的代价值(f值),其......
  • C语言——指针初阶(三)
    目录一.指针-指针    代码1:运行结果:    代码2:运行结果:        代码3:运行结果:二.指针数组例:往期回顾一.指针-指针    指针减去指针的前提:两个指针指向同一块空间。    指针减去指针的绝对值得到两个指针之间的元素个数......
  • 算法学习笔记
    基础算法贪心[lnsyoj4029/luoguP4109/HEOI2015]定价[lnsyoj2271/luoguP3745/省选联考2017]期末考试莫队普通莫队[luoguSP3267]D-query[luoguP1494]小Z的袜子带修莫队[luoguP1903]数颜色树上莫队[luoguSP10707]CountonatreeII[luoguP4074/WC2013]......
  • BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列
    BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比目录BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比预测效果基本介绍模型描述程序设计参考资料预测效......
  • 【C++算法】21.二分查找算法_山脉数组的峰顶索引
    文章目录题目链接:题目描述:解法C++算法代码:图解题目链接:852.山脉数组的峰顶索引题目描述:解法暴力解法:若:arr=[0,1,2,3,2,1,0]可以定义一个指针指向第一个元素,如果它后面的元素比它大,那么他就不是峰值。当第一次遇到一个数是大于后面那个数的时候,那个数就......