概述
1.1295. 统计位数为偶数的数字
/*给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数。*/
class Solution {
public int findNumbers(int[] nums) {
int count = 0;
for(int num : nums){
count += String.valueOf(num).length() % 2 == 0? 1: 0;
}
return count;
}
}
2.540. 有序数组中的单一元素
/**给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数。 */
class Solution {
public int singleNonDuplicate(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right){
int mid = (right - left) /2 + left;
if(nums[mid] == nums[mid - 1]){//中点跟左边的相等,则判断除开中点,左边还剩几位数
if((mid - left) %2 == 0){//偶数,则说明左边的存在这个数,改变right的值
right = mid - 2;
}else {//为奇数,则这个数在右边,改变left的值
left = mid + 1;
}
}else if(nums[mid] == nums[mid + 1]){//中间值右边的数相等,则看右边的数
if((right - mid)% 2==0){//偶数的话就,这个数就在右边,改变left的值
left = mid + 2;
}else {//奇数的话,则此数在左边,改变right的值
right = mid - 1;
}
}else {//不存在。返回nums的值
return nums[mid];
}
}
return nums[right];
}
}
3.剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
/**输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,
所有偶数在数组的后半部分。 */
/* class Solution {
public int[] exchange(int[] nums) {
int left = 0, right = nums.length - 1;
while(left < right){
while(left < right && nums[left] % 2 != 0){
left++;
}
while(left < right && nums[right] % 2 == 0){
right--;
}
if(left < right){
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}
return nums;
}
}*/
class Solution {
public int[] exchange(int[] nums) {
int i = 0, j = nums.length - 1, tmp;
while(i < j) {
while(i < j && (nums[i] & 1) == 1) i++;//指针 i遇到奇数则执行 i=i+1 跳过,直到找到偶数;
while(i < j && (nums[j] & 1) == 0) j--;//指针 j遇到偶数则执行 j=j−1 跳过,直到找到奇数;
tmp = nums[i];//交换 nums[i] 和 nums[j] 值;
nums[i] = nums[j];
nums[j] = tmp;
}
return nums;
}
}
最后
以上就是善良发卡为你收集整理的《C语言入门100例》(第27例) 穷举查找的全部内容,希望文章能够帮你解决《C语言入门100例》(第27例) 穷举查找所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复