[解题报告]【第27题】给定一个 n 个元素的数组,再给出 x ,查找 x 在数组中的下标 | 穷举法

简介: [解题报告]【第27题】给定一个 n 个元素的数组,再给出 x ,查找 x 在数组中的下标 | 穷举法

全文目录

 前言

 🎁主要知识点

          穷举法

 📓课后习题

          1295. 统计位数为偶数的数字

          540. 有序数组中的单一元素

          剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

 📑写在最后

☘前言☘

今天是c语言基础打卡的第26天,今天这些题我都写过,给个题解供大家参考把。

相关链接:

【第27题】给定一个 n 个元素的数组,再给出 x ,查找 x 在数组中的下标 | 穷举法


全文大约阅读时间: 20min


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)


🎁主要知识点

穷举法

其实很简单,就是与所有元素作比较,找到返回位置,找不到返回-1


int n;
int a[1000001];
int findIndex(int size, int a[], int value) {// 寻找的函数
    int i;
    for(i = 0; i < size; ++i) {
        if(value == a[i]) {   // 找到元素提前返回
            return i;
        }
    }    
    return -1;                                 // 没找到
}


📓课后习题

1295. 统计位数为偶数的数字

1295. 统计位数为偶数的数字


给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。


解题思路


枚举,符合要求就计数就好了。


bool weishu(int n){//返回位数是否为偶数
    int count = 0;
    while(n){
        count ++;
        n /= 10;
    }
    return !(count&1);//与count/2 == 0没有本质区别
}
int findNumbers(int* nums, int numsSize){
    int count = 0;
    for(int i = 0;i < numsSize;i++)
        if(weishu(nums[i])) count++;//符合条件则统计
    return count;
}


540. 有序数组中的单一元素

540. 有序数组中的单一元素


给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。


解题思路


其实是有序的,顺序查找就好了


int singleNonDuplicate(int* nums, int numsSize){
    int i;
    for(i = 0;i < numsSize - 1;i += 2)
        if(nums[i] != nums[i + 1])  return nums[i];//判断
    return nums[i];
}


剑指 Offer 21. 调整数组顺序使奇数位于偶数前面

540. 有序数组中的单一元素


输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。


解题思路


这个不要求排序,就双指针,交换元素就好了。


int* exchange(int* nums, int numsSize, int* returnSize){
    int i = 0 , j = numsSize - 1;
    *returnSize = numsSize;
    while(i < j){
        while((nums[i]&1)&&i < j)  //找到第一个偶数
            i++;
        while((!(nums[j]&1))&& i < j) //找到第一个奇数
            j--;
        if(i < j){
            nums[i] = nums[i] ^ nums[j];//交换i j对应元素
            nums[j] = nums[i] ^ nums[j];
            nums[i] = nums[i] ^ nums[j]; 
        }
        else break;      
    }
    return nums;
}




相关文章
|
监控 数据处理
基于STC89C52RC单片机的MODBUS RTU协议从机的实现
基于STC89C52RC单片机的MODBUS RTU协议从机的实现
550 0
|
存储 Java 测试技术
Java课程在线视频学习系统的设计与实现
Java课程在线视频学习系统的设计与实现
484 0
|
10月前
|
前端开发 JavaScript 开发者
React 分割线组件 Divider
在现代前端开发中,React 是最流行的 JavaScript 库之一,用于构建可维护的用户界面。本文介绍如何在 React 中使用分割线组件,从基础到高级逐步讲解。基础概念涵盖分割线的作用及其在 React 中的实现方式,包括使用 HTML 标签、第三方库(如 Material-UI 和 Ant Design)及自定义组件。常见问题及解决方案部分讨论了样式不一致、间距不当和响应式设计等问题,并提供了解决方案。高级用法则介绍了自定义分割线组件和动态生成分割线的方法。希望本文能帮助你在实际项目中更好地使用分割线组件。
357 71
|
11月前
|
算法 vr&ar 计算机视觉
数据结构之洪水填充算法(DFS)
洪水填充算法是一种基于深度优先搜索(DFS)的图像处理技术,主要用于区域填充和图像分割。通过递归或栈的方式探索图像中的连通区域并进行颜色替换。本文介绍了算法的基本原理、数据结构设计(如链表和栈)、核心代码实现及应用实例,展示了算法在图像编辑等领域的高效性和灵活性。同时,文中也讨论了算法的优缺点,如实现简单但可能存在堆栈溢出的风险等。
532 0
|
7月前
|
数据采集 达摩院 架构师
广东珠江投资管理集团走进阿里云
广东珠江投资管理集团走进阿里云
|
Java API Android开发
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
247 0
|
SQL 前端开发 JavaScript
kettle开发-超好用自定义数据处理组件
kettle开发-超好用自定义数据处理组件
496 0
|
机器学习/深度学习 运维 资源调度
智能化运维:机器学习在系统监控中的应用
【6月更文挑战第29天】在数字化时代的潮流中,智能化运维成为提升企业IT效率的关键。本文将探讨机器学习如何革新传统的系统监控方法,通过预测性维护和异常检测等技术,实现更加高效和精准的运维管理。文章不仅阐述理论,更结合实例,为读者展示智能化运维的实际成效与未来趋势。
|
存储 安全 定位技术
公网IP和私有IP
公网IP和私有IP
554 2
|
存储 弹性计算 安全
阿里云服务器镜像类型怎么选?公共镜像、自定义镜像等镜像区别及选择参考
阿里云服务器镜像包括公共镜像、云市场镜像、自定义镜像、社区镜像、共享镜像,镜像可以满足各类型用户对于应用环境的快速部署、灵活管理的需求。不过有的新手用户并不知道这些镜像之间的区别,因此不知道应该怎么选择,本文为大家介绍一下阿里云服务器各个镜像之间的区别及选择参考。
阿里云服务器镜像类型怎么选?公共镜像、自定义镜像等镜像区别及选择参考