【剑指Offer】03——数组中重复的数字

题目描述:找出数组中重复的数字

在一个长度为n的数组里的所有数字都在0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。

解题要点:题目说所有数字在0~n-1,然后数组长度为n,意味着如果没有重复的数字,则0~n-1都会出现一次,也就是数组排序后元素值和数组下标相同。由于题意特殊:排序方式采用与下标相比较的方式。与下标相同,则向后比较,不同,则交换归位。

分析:一个萝卜  一个坑

         1、首先看萝卜和坑是否对得上対得上,対得上往下看

         2、对不上   看萝卜本来的坑是啥?

              若是相同的萝卜,则有重复的数字

              若是不相同,则两个萝卜对换

完整的代码:

#include<iostream>
#include<vector>
using namespace std;

int findRepeat(vector<int> &a){
    int i = 0 , temp;
    while(i < a.size()){

      /*  for(int i = 0 ; i < a.size() ; i ++){
            cout << a[i] << " ";
        }
        cout << endl;*/

        if(a[i] == i) i ++;
        else{
            if(a[a[i]] == a[i]) return a[i] ;
            else{
                temp = a[a[i]];
                a[a[i]] = a[i];
                a[i] = temp;
            }
        }
    }
    return -1;
}

int main(){
    int n,temp,res;
    vector<int>  a;

    cout << "n = " ;
    cin >> n ;
    cout << "a : " ;
    for(int i = 0 ; i < n ; i ++){
        cin >> temp;
        a.push_back(temp);
    }

    res = findRepeat(a);
    if(res != -1)
        cout << "Repeat number is : " << res << "." << endl;
    else
        cout <<"No have Repeat number." ;
    return 0;
}

 

### 如何在uni-app中使用HTML5+功能 #### 条件编译的重要性 由于小程序及H5等平台并没有遵循HTML5+扩展规范,所以在`uni-app`调用HTML5+的功能,必须通过条件编译来确保代码仅在支持HTML5+的环境中执行。如果不加判断直接调用`plus`对象的相关方法,则会在不支持HTML5+的平台上抛出`plus is not defined`错误[^1]。 #### 示例代码:获取应用ID 以下是通过条件编译实现HTML5+功能的一个简单例子——获取当前应用的唯一标识符(appid)。此代码片段只会在App端生效: ```javascript // #ifdef APP-PLUS var appid = plus.runtime.appid; console.log('应用的 appid 为:' + appid); // #endif ``` #### 推送消息至手机状态栏 另一个常见的HTML5+应用场景是向设备的状态栏发送通知,并允许用户点击该通知后跳转到指定的应用内部页面。下面是一个具体的实现方式: ```javascript // 注册消息点击事件监听器 plus.push.addEventListener("click", (msg) => { console.log("您点击了: " + JSON.stringify(msg)); // 跳转到目标页面 uni.switchTab({ url: "/pages/warn/index", success: function(res) { console.log('跳转成功', res); }, fail: function(err) { console.log('跳转失败', err); } }); }, false); ``` 以上代码展示了如何利用`plus.push`模块处理推送消息并引导用户访问特定界面的操作流程[^4]。 #### 配置注意事项 值得注意的是,在实际项目开发过程中还需要关注不同终端之间的差异性以及可能存在的兼容性问题。例如某些原生插件或者API接口可能会因为操作系统版本的不同而表现出行为上的区别。因此建议开发者仔细阅读官方文档中的相关内容说明[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值