新疆建设兵团12333网站/万网官网入口
全文目录
- ☘前言☘
- 🎁主要知识点
- 穷举法
- 📓课后习题
- 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;
}
📑写在最后
最近忙于更新自己的一些总结文章,这个系列更新的较晚,大家如果喜欢还希望给个点赞收藏啥的 我会继续更新下去的0.0