首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何用指针找到10个数字中最大的两个?

要用指针找到10个数字中最大的两个,可以按照以下步骤进行:

  1. 声明一个整型数组,并初始化包含10个数字的数组。
  2. 声明两个指针变量,分别指向数组的第一个元素和第二个元素。
  3. 使用循环遍历数组的剩余元素,比较每个元素与当前最大值和次大值的大小关系。
  4. 如果当前元素大于最大值,则更新最大值,并将次大值更新为原最大值。
  5. 如果当前元素小于最大值但大于次大值,则更新次大值。
  6. 循环结束后,最大值和次大值即为数组中最大的两个数字。

以下是一个示例代码:

代码语言:txt
复制
#include <iostream>
using namespace std;

int main() {
    int arr[10] = {5, 9, 3, 7, 2, 8, 1, 6, 4, 10};
    int* maxPtr = &arr[0];
    int* secondMaxPtr = &arr[1];

    for (int i = 2; i < 10; i++) {
        if (arr[i] > *maxPtr) {
            secondMaxPtr = maxPtr;
            maxPtr = &arr[i];
        } else if (arr[i] > *secondMaxPtr) {
            secondMaxPtr = &arr[i];
        }
    }

    cout << "最大的两个数字是:" << *maxPtr << " 和 " << *secondMaxPtr << endl;

    return 0;
}

这段代码使用了两个指针变量maxPtrsecondMaxPtr来指向最大值和次大值。通过遍历数组,比较每个元素与当前最大值和次大值的大小关系,更新指针的指向。最后输出最大的两个数字。

请注意,以上示例代码中没有提及任何特定的云计算品牌商,如需了解腾讯云相关产品和产品介绍,可以参考腾讯云官方文档或咨询腾讯云官方客服。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试题解:输入一个数A,找到大于A一个最小数B,且B不存在连续相当两个数字

昨天发算法有一处情况没考虑到,比如加一后有进位,导致又出现重复数字情况,修正后今天重新发一次。 比如输入99,那B应该是101 因为100有两个连续相当0。...# -*- coding: utf-8 -*- """ 题目:输入一个数A,找到大于A一个最小数B,且B不存在连续相当两个数字。...比如输入99,那B应该是101 因为100有两个连续相当0 基本思路:最坏办法 加1一直加1 直到找到有不重复数为止 优化思路 如果输入是1099 加1后变成1100,那么他下一个不重复数如果一直加...= data % head return need_data def judge(data): """ 判断data是否有连续重复数字 args:data数字...if string_num[i-1] == string_num[i]: #如果有重复数字,则把重复两个数,中小一位数字加1,然后在把后面的位置

65810

一文多图带你看看如何用「对撞指针」思想巧解数组题目

分享题目是LeetCode: 167.两数之和||-输入有序数组 125.验证回文串 11.盛最多水容器 接下来,逐一看下如何用对撞指针思想来解答这三道题目。...01 LeetCode #167 两数之和|| 题目描述: 给定一个已按照升序排列有序数组,找到两个数使得它们相加之和等于目标数。...因此,找到两个数7和11,其和等于目标值。 ?...题目中描述回文串是忽略字母大小写并且只考虑字母和数字字符。 接下来以字符串"@CaTnAc#"为例来看一下如何用对撞指针方法判断一个字符串是否是回文串。 ?...,an,每个数代表坐标一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 两个端点分别为 (i, ai) 和 (i, 0) 。

1.1K31
  • Python 一网打尽之从玩转冒泡排序开始

    max()、min()…… 求最大值,有多种思路,其中最常用思路有: 摆擂台法 相邻两个数字比较法 如一个数列 nums=[3,1,8,9,12,32,7] 2.1 摆擂台法 算法思想: 找一个擂台...找到一个最大值后,再在余下数字又找最大值,以此类推,结局会怎样?...2.2 相邻两个数字相比较 如果有 7 个数字,要找到里面的最大值,有一种方案就是每相邻两个数字之行比较,如果前面的比后面的数字大,则交换位置,否则位置不动。...其实冒泡排序就是找了一轮最大值,又继续找最大思路。可以对上述算法进行一些优化,已经找到最大值没有必要再参与后继最大值中去。 显然,找最大最多轮数是数列长度减 1 就可以了。...插入: 为后数列数字在前数列中找到适当位置后,插入此数据。 插入排序代码实现: 这里使用前指针和后指针方案。 前指针用来在前数列定位数字,方向是从右向左。

    40730

    前端学数据结构与算法(十二):有趣算法 - 多指针与滑动窗口

    前言 如果说如何用算法高效有趣解决某些问题,那多指针和滑动算法绝对是算其中佼佼者。...双指针: 当然,还可以使用一种双指针解法,首先还是对两个数组进行排序,然后使用两个指针分别指着两个数组开头,谁数值小谁向后滑动,遇到相同元素就放入set内,直至两个数组中有一个到头为止。...,an,每个数代表坐标一个点 (i, ai) 。 在坐标内画 n 条垂直线,垂直线 i 两个端点分别为 (i, ai) 和 (i, 0) 。...而这道经典题目,我们同样可以使用对撞指针解法,首先设置首尾两个指针,依次向中间靠近,但这题麻烦地方在于两个指针之间谁动谁不动问题。 经过观察不难发现,就是指针所指向值,谁数值小,谁就需要移动。...size = nums.length + 1 // 窗口大小, 因为是要找到最小窗口,所以设置一个比最大还 +1 窗口 // 如果能找到一个符合条件子数组才会更新窗口大小 while

    57010

    C++不知算法系列之排序从玩转冒泡算法开始

    最大值,有多种思路,其中最常用思路有: 摆擂台法 相邻两个数字比较法 现有一个数列 nums=[3,1,8,9,12,32,7],请找出最大值(最小值)。...[i] > m) m = nums[i]; } // 最后留在擂台上就是最大值 cout<<"最大值是:"<<m; return 0; } 很简单,对不对,如果,找到一个最大值后,再在余下数字又找最大值...归根结底,上述排序思路就是不停地找最大值呀、找最大值……找到最后一个数字,大家自然而然就排好序了。 所以算法结构内层循环找最大逻辑是核心,而外层就是控制找呀找呀找多少次。...2.2 相邻两个数字相比较 如果有 7 个数字,要找到里面的最大值,有一种方案就是每相邻两个数字之行比较,如果前面的比后面的数字大,则交换位置,否则位置不动。...插入排序代码实现: 这里使用前、后双指针方案。 前指针用来在前数列定位数字,方向是从右向左。 后指针用来在后数字定位数字,方向是从左向右。

    24620

    指针(从零到一)【纯干货】【长期更新】

    由于通过地址能找到所需变量单元,可以说,地址指向该变量单元。因此,将地址形象化称为“指针”。意思是通过它能找到以它为地址内存单元。 指针是个变量,存放内存单元地址(编号)。...通过指针可以找到该地址所对应变量进行相关操作,对应到代码: #include int main() { int a = 5;//在内存开辟一块空间 int* pa = &a;/...四、指针运算 指针运算包括:1.指针+-整数;2.指针-指针;3.指针关系运算 两个指针相减前提:两个指针指向同一个空间 指针-指针得到两个指针之间元素个数,证明如下代码: 在了解完指针相减知识点后...以下面代码为例,我们来看看如何用指针知识来初始化数组: 二级指针 指针变量也是变量,是变量就要开辟空间来存放,就必然有自己地址,那么指针变量地址存放在哪里?...这就是二级指针。 对于二级指针运算:*ppa通过对ppa地址进行解引用,找到是*pa,所以*ppa-->pa,由于*pa-->a,所以**ppa-->a.

    10910

    公司数据结构+算法面试100题

    第17题(字符串): 题目:在一个字符串中找到第一个只出现一次字符。输入abaccdeff,则输出b。  分析:这道题是2006年google一道笔试题。...(矩阵) 求一个矩阵中最大二维矩阵(元素和最大).: 1 2 0 3 4 2 3 4 5 1 1 1 5 3 0 中最大是: 4 5 5 3 要求:(1)写出算法;(2)分析时间复杂度;(3)用C...求一个二叉树任意两个节点间最大距离, 两个节点距离定义是 这两个节点间边个数, 比如某个孩子节点和父节点间距离是1,和相邻兄弟节点间距离是2,优化时间空间复杂度。 (2)....(这是2002年在一考研班上遇到算法题) 2.求最大连续递增数字串(“ads3sl456789DF3456ld345AA”“456789”) 3.实现strstr功能,即在父串寻找子串首次出现位置...现在有若干条材质相同绳子,问如何用烧绳方法来计时一个小时十五分钟呢? 2.你有一桶果冻,其中有黄色、绿色、红色三种,闭上眼睛抓取同种颜色两个。 抓取多少个就可以确定你肯定有两个同一颜色果冻?

    3.3K90

    万字长文!剑指offer全题解思路汇总

    面试题9:斐波那契数列:如何不使用递归实现斐波那契数列,需要把前面两个数字存入在一个数组。斐波那契数列变形有很多,青蛙跳台阶,一次跳一个或者两个;铺瓷砖问题。...两个指针交汇时候如果还没找到,就终止操作。...面试题42:和为s连续正数序列:设定两个指针,先分别指向数字1和数字2,并设这两个指针为small和big,对small和big求和,如果和大于目标值,则从当前和删除small值,并把small值加一...当遇到当前指向字符为特殊字符"#"或者指针超出了序列长度,则返回None,指针后移,继续遍历。 面试题64:二叉搜索树第k个结点:序遍历输出一个序列,然后找到序列第k个数即可。...当目前两堆总数为偶数时候,把数字存入最大堆,然后重排最大堆,如果最大堆顶数字大于最小堆堆顶数字,则把两个堆顶数字交换,重排两堆,此时两堆数字总数为奇数,直接输出最大堆堆顶数字即为中位数;如果当前两堆总数为技术时候

    78620

    学会这14种模式,你可以轻松回答任何编码面试问题

    在排序数组或链表搜索对时,两个指针通常很有用;例如,当你必须将数组每个元素与其他元素进行比较时。 需要两个指针,因为仅使用指针,你将不得不不断地循环遍历数组以找到答案。...在许多情况下,两个指针可以帮助你找到具有更好空间或运行时复杂性解决方案。 确定何时使用"两指针"方法方法: 在处理排序数组(或链接列表)并且需要找到一组满足某些约束元素时,它将遇到一些问题。...为了解决该问题,我们有兴趣知道一个部分最小元素,而另一部分最大元素。这种模式是解决此类问题有效方法。 该模式使用两个堆;最小堆可查找最小元素,最大堆可查找最大元素。...该模式通过将数字前半部分存储在最大而起作用,这是因为你要在前半部分中找到最大数字。 然后,你想将数字后半部分存储在最小堆,因为你希望在后半部分找到最小数字。...识别两个堆模式方法: 在诸如"优先级队列","计划"之类情况下很有用 如果问题表明您需要找到集合中最小/最大/中值元素 有时,对于解决具有二叉树数据结构问题很有用 问题特点 查找数字中位数(

    2.9K41

    【c++算法篇】双指针(上)

    所有的零都被移动到了数组末尾 [0,0] 指针 dest 来跟踪最后一个找到非零元素位置,每次找到非零元素时,就把这个元素交换到 dest 现在位置。...: 分析结果可能性 在每一步操作,一个数将被转换为其各位数字平方和。因此,我们可以观察到: 这一操作将数字转换为一个新数,其最大值取决于原数字位数。...随着操作进行,如果数字不立即收敛到1,它们会逐渐降低到一个更小范围 : 有限状态和抽屉原理 因为每步操作后数字大小有上限,并且数字总数是有限最大999平方和也只有243),所以可以推断状态空间...这意味着至 少有一个数字会被重复 一旦一个数字在操作过程重复出现,后续操作将重复之前操作,从而形成一个循环。...然后,我们计算由这两个指针指向线和 x 轴构成长方形面积,并尝试找出能够获得更大面积线对 具体地说,我们将指针向对方移动,并在每一步更新最大面积。

    9410

    LeetCode刷题DAY 9:两数之和II

    1 题目描述 给定一个已按照升序排列有序数组,找到两个数使得它们相加之和等于目标数,并满足两个要求:1、按照先后顺序输出两个下标值,下标值从1开始;2、假设每个输入只对应唯一答案,不可以重复使用相同元素...2 2 解题 思路一:哈希表 与LeetCode刷题DAY 8:两数之和思路二一致,只不过输出时要把下标+1,不然下标是从0开始。...因为数组是按照升序排列,因此可以设置两个指针分别指向数组两端,即最小和最大值。...计算指针指向数字和,如果大于target,大数字指针减1,如果小于target,小数字指针加1,如果正好相等则输出。...对于一个顺序存储且里面元素是有序排列结构,判断中间位置值是否与目标值一致,如不一致则根据大小关系在中间值切割前后两个子表,重复前述操作进行查找。

    30310

    【c++算法篇】双指针(下)

    sort(nums.begin(),nums.end()); } }; 具体讲解一下我们思路: 这里使用是一种双指针技术:固定最长边(也就是数组最大值),使用两个指针来查找剩余部分可能两个较短边...解决方法是在找到一个符合条件组合后,跳过所有相同元素 遍历策略:外层循环遍历数组,内层使用双指针从两端向中间查找两个其他元素,以保证三个数和为零 跳过重复元素: 在外层循环中,如果当前数字与前一个数字相同...,但需要找到三个或四个数组合 移除元素:从有序数组移除重复项或特定值,并返回新数组长度 快慢指针: 链表中环检测:使用快慢指针检测链表是否有环,快指针一次移动两步,慢指针一次移动一步 寻找链表中点...:使用快慢指针找到链表中间节点,快指针结束时慢指针在中点 寻找链表倒数第k个元素:快指针先移动k步,然后快慢指针共同移动,快指针到达末尾时慢指针所在位置即倒数第k个元素 前后指针: 归并排序合并步骤...对链表进行操作:在链表上进行操作时,删除节点或反转链表,常常需要前后指针来保持结点连接。

    8810

    数据结构应该怎么学?

    image 除了同时操作一个链表之外,有的题目也会给出两个或者更多链表,两数相加, leetcode 2.两数相加、21.合并两个有序链表、160.相交链表 21.相交节点 题目描述: 编写一个程序...而当不存在时,即 c=0,那么两个指针最终都会指向空节点。 小结 链表操作无非就是两种,插入,删除。...在一个逆波兰表达式,运算符前面两个 num 就是这个运算组成。 我们要做事情就是,找到一个运算符时候,同时找到他前面的两个数,而栈现金先去特性满足这个需求,使用栈来解决。 ?...找到 nums1 每个元素在 nums2 下一个比其大值。nums1 数字 x 下一个更大元素是指 x 在 nums2 对应位置右边第一个比 x 大元素。...我们还能观察到栈中元素是从大到小,可以称这个栈为==单调递减栈==( 1019.寻找链表下一个更大节点,503.下一个更大元素 II、402.移掉 k 位数字,39.每日温度,在 1673.找出最具有竞争力子序列

    1.5K20

    14种模式搞定面试算法编程题(PART I)

    问题输入是线性数据结构,链表、数组或字符串 题目要求查找最长/最短子字符串、子数组或所需值 举个栗子 来看看实际应用滑动窗口解决问题 滑动窗口最大值(剑指offer)[2] 滑动窗口中位数(LEETCODE...在排序数组或链表搜索元素对时,两个指针通常很有用, 例如将数组每个元素与其他元素进行比较时。 通常我们需要两个指针是因为如果只采用单个指针,必须不断循环数组才能找到答案。...通过以不同速度移动(例如,在循环链表),算法证明两个指针必然会相遇。一旦两个指针都处于循环循环中,快速指针就应该捕获慢速指针。 ?...在涉及间隔许多问题中,你可以需要找到重叠间隔或合并间隔(如果它们重叠)。给定两个间隔 和 ,可能存在6不同间隔交互情况: ?...应用场景 涉及树先序、序或者后续遍历问题 如果问题涉及搜索节点离叶子更近目标 举个栗子 求根到叶子节点数字之和(LEETCODE)[19] 二叉树最大深度(LEETCODE)[20] 从中序与后序遍历序列构造二叉树

    2.1K11

    第八节(字符和字符串)

    ●如何用C语言char数据类型储存单个字符 ●如何创建char类型数组储存多个字符串 ●如何初始化字符和字符串 ●字符串和指针关系 ●如何输入字符和字符串,并将其打印出来 一.char数据类型:...程序清单初始化了两个char类型变量,并将其分别打印出来,先打印字符再打印数字。...标准ASCII码最大值是127,其中包含所有的字母、数字、标点符号和键盘上其他字符。 从128到255是扩展ASCII码,用于表示特殊字符,外来字母和图形符号。...malloc()函数找到并预留所需大小内存块,并返回内存块第1个字节地址。 编译器会自动分配合适内存,我们不用关心在何处找到内存。...因此,还需要创建两个变量储存名两个部分,或者要求用户在输入时不要添加空格。 正因如此,gets()函数在读取用户输入字符串方面比scanf()更方便,特别是字符串包含空格情况。

    29730

    LeetCode-581-最短无序连续子数组

    找到子数组应是最短,请输出它长度。...得到未排序子数组长度 特例判断:只有当end-start+1>=0时,长度计算有效,否则为0 方法2、双指针找边界: 初步思路是,使用双指针指针i从头开始遍历,指针j从尾开始遍历。...分别找到第一个逆序位置,之后返回长度即可,但这种方法不适用于数组中有重复数字情况,[1,6,5,5],这使得逆序位置判断失效。...于是换一种思路,让指针分别找到最后逆序位置 同时从前往后和从后往前遍历,分别得到要排序数组右边界和左边界; 寻找右边界: 从前往后遍历过程,用max记录遍历过最大值,如果max大于当前nums...[i],说明nums[i]位置不正确,属于需要排序数组,因此将右边界更新为i,然后更新max;这样最终可以找到需要排序数组右边界,右边界之后元素都大于max; 寻找左边界: 从后往前遍历过程

    32920

    66道前端算法面试题附思路分析助你查漏补缺

    因此判断一个二进制 1 个数,我们可以判 断这个数可以经历多少次这样过程。 :1100&1011=1000 12....因此我们只需要从数组首尾开始找到第一对和 为 s 数字对进行了。因此我们可以使用双指针方式,左指针初始指向数组第一个元素,右指针初始指向数组最后一个元素 。...然后首先判断两个指针指向数字和是否为 s ,如果为 s ,两个指针指向数字就是我们需要寻找数字对。如果两数和 比 s 小,则将左指针向左移动一位后继续判断。... 果空缺总数小于或者等于 0 个数,那么这个数组就是连续:反之则不连续。最后,我们还需要注意一点:如果数组非 0 数字重复出现,则该数组不是连续。...如果数据 流读出偶数个数值,那么中位数就是所有数值排序之后中间两个平均值。 64. 滑动窗口中最大值(待深入理解) 题目: 给定一个数组和滑动窗口大小,找出所有滑动窗口里数值最大值。

    1.7K20

    TypeScript算法题实战——剑指 Offer篇(4)

    本章节包括题目有: 题目 难度 礼物最大价值 简单 最长不含重复字符子字符串 简单 丑数 中等 第一个只出现一次字符 简单 数组逆序对 困难 两个链表第一个公共节点 简单 在排序数组查找数字...I 中等 0~n-1缺失数字 简单 二叉搜索树第k大节点 简单 二叉树深度 简单 一、礼物最大价值 1.1、题目描述 在一个 m*n 棋盘每一格都放有一个礼物,每个礼物都有一定价值(...5.1、题目描述 在数组两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。...也可以使用双指针解法,让A和B两个指针遍历一次自己赛道后,交换赛道再跑一次即可,判断是否相交。...在范围0~n-1内n个数字中有且只有一个数字不在该数组,请找出这个数字

    5700

    kubernetes源码贡献者带你刷14道leetcode

    下面展示一下最大公约数算法效果: ? 过程 1,两数之和 题目大意 给定一个目标值,要在一个给定数组中找到两个数,它们和为目标值。...解题思路 使用map数据结构,遍历过程中找到从map取出值为目标值减去当前值数。...8,字符串最大公因子 题目大意 给定两个字符串A和B,求最大公因子 解题思路 最大公因子存在充要条件A+B=B+A。...13,最大子序和 题目大意 给定一个整数数组,找到一个具有最大连续子数组(子数组最少包含一个元素),返回其最大和。...解题思路 买卖股票最佳时机抽象一下就是找到一个子序列尾和首最大。保存两个数,一个是当前为止尾和首最大A,另外是计算这个最佳值开始位置。

    82210

    数组面试题-大力出奇迹?

    文章目录 数组重复数字 二维数组查找 旋转数组最小数字 调整数字顺序使奇数位于偶数前面 数组中出现次数超过一半数字 最小k个数 连续子数组最大数字序列某一位数字 把数组排成最小数...从头到尾扫描这个数字每个数字,当扫描到下标为i数字是,比较这个数字(设为m)是否和i相同,若相同则继续扫描下一个数字;否则拿它和下标为m数字比较,如果相同就找到了一个重复数字,否则交换这两个数字...我们可以创建一个大小为k数据容器来存储最小k个数字,每次读入一个数时候,判断容器是否已有k个数据,没有的话则放入,有的话则比较容器最大值,若大于当前数则替换之,保持容器是目前最小k个数,...题目:求数组只出现一次两个数字。...也就是说,如果我们从头到尾依次异或数组每个数字,那么最终结果刚好是那个只出现一次数字,那些出现两次以上数字全部在异或抵消了。 可这道题目是有两个只出现一次数字。怎么拆成两个子数组呢?

    58910
    领券