网站建设 网页设计 网站制作织梦猫html5高端网络服务机构网站模板
web/
2025/10/8 21:42:13/
文章来源:
网站建设 网页设计 网站制作,织梦猫html5高端网络服务机构网站模板,好的网页制作公司有哪些,企业培训考试系统题库数组的创建和使用 奇数位于偶数之前冒泡排序两数之和只出现一次的数字多数元素存在连续三个奇数的数组 奇数位于偶数之前
调整数组顺序使得奇数位于偶数之前。调整之后#xff0c;不关心大小顺序。 如数组#xff1a;[1,2,3,4,5,6] 调整后可能是#xff1a;[1, 5, 3, 4, 2,… 数组的创建和使用 奇数位于偶数之前冒泡排序两数之和只出现一次的数字多数元素存在连续三个奇数的数组 奇数位于偶数之前
调整数组顺序使得奇数位于偶数之前。调整之后不关心大小顺序。 如数组[1,2,3,4,5,6] 调整后可能是[1, 5, 3, 4, 2, 6]
public static void func4(int[] array) {int i 0;int j array.length-1;while (i j) {//循环外面给了i j ,思考这里为什么还需要判断while (i j array[i] % 2 ! 0) {i;}//i 下标一定是偶数while (i j array[j] % 2 0) {j--;}int tmp array[i];array[i] array[j];array[j] tmp;}
}冒泡排序
给定一个整型数组, 实现冒泡排序(升序排序)
进一步进行了优化当数据在排序过程当中有序了会在某一趟排序后发现数据没有交换。 所以每一趟排序完都去检查是否发生了交换没有交换证明数据已近有序不需要再进行剩余趟数的排序了。
public static void bubbleSort(int[] array) {boolean flg false;//1、确定一个趟数for (int i 0; i array.length-1; i) {for (int j 0; j array.length-1-i; j) {if(array[j] array[j1]) {int tmp array[j];array[j] array[j1];array[j1] tmp;flg true;}}if(flg false) {//没有交换break;}}
}两数之和
给定一个整数数组 nums 和一个整数目标值 target请你在该数组中找出 和为目标值 target 的那两个整数并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1 输入nums [2,7,11,15], target 9 输出[0,1] 解释因为 nums[0] nums[1] 9 返回 [0, 1] 。
本题最重要的一句话假设每种输入只会对应一个答案 也就意味着不会有多个答案暴力求解就是挨个匹配查找即可代码如下
public int[] twoSum(int[] nums, int target) {int[] result new int[2];// 双指针i和ji从前向后遍历j从后向i遍历若arr[i]arr[j]target,即为题解for (int i 0; i nums.length - 1; i) {for (int j nums.length - 1; j i; j--) {if (nums[i] nums[j] target) {result[0] i;result[1] j;}}}return result;
}如果想提升效率需要用到后期学习的哈希表来解答目前大家属于初学阶段暂且以上述解法为准。
只出现一次的数字
给定一个非空整数数组除了某个元素只出现一次以外其余每个元素均出现两次。找出那个只出现了一次的元素。 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 本题主要考察运算符异或。
异或的特点是 1、n ^ n 0即两个相同的数字异或是0 2、0 ^ n n即0和任何数字进行异或结果就是那个任何数字。
public int singleNumber(int[] nums) {// 用异或运算的性质可以巧妙的解决这个问题因为数组中只有一个数字出现一次// 则其他出现两次的数字用异或运算后都是0最终整个数组异或运算的结果即为所求。int ret 0;for (int i : nums) {ret ^ i;}return ret;
}多数元素
给定一个大小为 n 的数组找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的并且给定的数组总是存在多数元素。 示例 1 输入[3,2,3] 输出3 示例 2 输入[2,2,1,1,1,2,2] 输出2
数组中出现次数超过一半的数字一定是排好序之后中间位置的数字。
/*** 排序法* 将数组排序后数组n/2的元素一定是众数*/
public int majorityElement(int[] nums) {Arrays.sort(nums);return nums[nums.length/2];
}存在连续三个奇数的数组
给你一个整数数组 arr请你判断数组中是否存在连续三个元素都是奇数的情况如果存在请返回 true 否则返回 false 。 示例 1 输入arr [2,6,4,1] 输出false 解释不存在连续三个元素都是奇数的情况。 示例 2 输入arr [1,2,34,3,4,5,7,23,12] 输出true 解释存在连续三个元素都是奇数的情况即 [5,7,23] 。
本题比较简单数字是连续出现的所以我们只需要定义一个计数器如果连续出现的次数超过3则返回true。
public boolean threeConsecutiveOdds(int[] arr) {// 引入标志位记录连续出现奇数的个数int count 0;for (int i 0; i arr.length; i) {if (isConsecutiveOdd(arr[i])) {// 出现奇数count ;count ;if (count 3) {// 出现连着三个奇数返回truereturn true;}}else {// 碰到偶数count重置count 0;}}return false;
}private boolean isConsecutiveOdd(int num) {return num % 2 ! 0;
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89275.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!