奇数位于偶数之前
(调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。如数组:[1,2,3,4,5,6],调整后可能是:[1, 5, 3, 4, 2, 6])
public static void swap(int[] array, int i, int j) {
int tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
public static void func(int[] array) {
int i = 0;
int j = array.length - 1;
while(i < j) {
while(i < j && array[i] % 2 != 0) {
i++;
}
while(i < j && array[j] % 2 == 0) {
j--;
}
swap(array,i,j);
}
}
public static void main2(String[] args) {
int[] array = {1,2,3,4,5,6};
func(array);
System.out.println(Arrays.toString(array));
}
冒泡排序
(给定一个整型数组, 实现冒泡排序(升序排序))
//注意代码的细节,特别是两个循环和 flg 变量的创建
public static void bubbleSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
boolean flg = false;
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j + 1);
flg = true;
}
}
if(flg == false) {
break;
}
}
}
public static void main4(String[] args) {
int[] array = {3,1,4,6,2,9,2,8,2};
//法一
//Arrays.sort(array);
//法二
bubbleSort(array);
System.out.println("排列后的数组:"+Arrays.toString(array));
}
两数之和
(给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那 两个 整数,并返回它们的数组下标。
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] )
public static int[] twoIndex(int[] array, int target) {
int[] tmp = {-1,-1};
for (int i = 0; i < array.length; i++) {
for(int j = i+1; j < array.length; j++) {
if(array[i] + array[j] == target) {
tmp[0] = i;
tmp[1] = j;
}
}
}
return tmp;
}
public static void main5(String[] args) {
int[] array = {2,7,11,15};
int[] ret = twoIndex(array,9);
System.out.println(Arrays.toString(ret));
}
出现一次的数字
(给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次)
public static int singleNum(int[] array) {
int ret = 0;
for (int i = 0; i < array.length; i++) {
ret ^= array[i];
}
return ret;
}
public static void main6(String[] args) {
int[] array = {2,2,1};
System.out.println(singleNum(array));
}
多数元素
(给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
输入:[3,2,3]
输出:3)
public static int moreNum(int[] array) {
Arrays.sort(array);
return array[array.length/2];
}
public static void main7(String[] args) {
int[] array = {3, 2, 3};
System.out.println(moreNum(array));
}
存在连续3个奇数的数组
(给你一个整数数组arr,请你判断数组中是否存在连续三个元素都是奇数的情况:如果存在,请返回true;否则,返回false
输入:arr = [2,6,4,1]
输出:false
解释:不存在连续三个元素都是奇数的情况。)
public static boolean function(int[] array) {
int count = 0;
for (int i = 0; i < array.length; i++) {
if(array[i]%2 != 0) {
count++;
if(count == 3) {
return true;
}
}else {
count = 0;
}
}
return false;
}
public static void main(String[] args) {
int[] array = {2,6,4,1};
boolean flg = function(array);
System.out.println(flg);
}