[解题报告]【第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;
}




相关文章
|
11月前
|
算法
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置
|
3月前
|
算法
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
【算法】二分查找——在排序数组中查找元素的第一个和最后一个位置
|
1月前
(剑指Offer)04、二维数组中的查找11、旋转数组的最小数字50、第一个只出现一次的字符(2021.12.02)
(剑指Offer)04、二维数组中的查找11、旋转数组的最小数字50、第一个只出现一次的字符(2021.12.02)
31 1
|
6月前
|
存储 算法 Java
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
数据结构和算法面试题:给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
88 0
|
6月前
|
算法 程序员 索引
【算法训练-二分查找 一】【基本二分】二分查找、在排序数组中查找元素的第一个和最后一个位置
【算法训练-二分查找 一】【基本二分】二分查找、在排序数组中查找元素的第一个和最后一个位置
56 0
|
算法
【算法专题突破】二分查找 - 在排序数组中查找元素的第一个和最后一个位置(17)
【算法专题突破】二分查找 - 在排序数组中查找元素的第一个和最后一个位置(17)
63 0
剑指offer 57. 数组中数值和下标相等的元素
剑指offer 57. 数组中数值和下标相等的元素
105 0
剑指offer 57. 数组中数值和下标相等的元素
|
算法
每日一题—— 在排序数组中查找元素的第一个和最后一个位置
每日一题—— 在排序数组中查找元素的第一个和最后一个位置
|
算法
力扣34题. 在排序数组中查找元素的第一个和最后一个位置
力扣34题. 在排序数组中查找元素的第一个和最后一个位置
85 0
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置
57 2
每日三题-寻找两个正序数组的中位数 、搜索旋转排序数组、 在排序数组中查找元素的第一个和最后一个位置