改变原有数组元素的值
实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
方法一:在原来的数组上进行改动
方法二:创建一个新的数组
奇数位于偶数之前
调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。
如数组:[1,2,3,4,5,6],调整后可能是:[1, 5, 3, 4, 2, 6]
方法一: 类比冒泡排序,这里比的不是大小,而是正负。
方法二:从两端开始向内比较,若前端是偶数,若后端是奇数,交换两者的位置,然后前端向后移动一位,后端向前移动一位。(显然方法二比较次数更少,效率更高)
两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
思路:
按位异或:不一样的进行或,一样的是0
1011 0110
0110 0111 ^
1101 0001
原理:两个相同的数异或运算后结果为0
eg:{1,2,3,2,1}目标即为找到3,俩号、两两异或,最终结果即为所要求的值
多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。
方法一:直接算出现次数大于一半的,然后输出
方法二:Arrays.sort();排序,则排在最中间的数据就是出现次数大于n/2
方法三:投票法
从第一个元素开始,相同的加,不同的抵消掉,最后剩下的没有被抵消掉的一定是出现次数最多的
存在连续三个奇数的数组
给你一个整数数组 arr
,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回 true
;否则,返回 false
。