1. 改变原有数组元素的值
实现一个方法 , 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
public class Main{
public static void main(String[] args) {
int[] array ={1,2,3};
func(array);
System.out.println(Arrays.toString(array));
}
public static void func(int[] array) {
for (int i = 0; i < array.length; i++) {
array[i] = array[i]*2;
}
}
}
编辑
2. 求数组的平均值
实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).
public class Main{
public static double avg(int[] array) {
int sum = 0;
for (int i : array) {
sum = sum + i;
}
return sum * 1.0 / array.length;
}
public static void main(String[] args) {
int[] arr1 = {1, 2, 5, 6, 8, 9, 11};
System.out.println(avg(arr1));
}
}
编辑
3. 奇数位于偶数之前
调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。如数组:[1,2,3,4,5,6]
调整后可能是:[1, 5, 3, 4, 2, 6]
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--;
}
int tmp = array[i];
array[i] = array[j];
array[j] =tmp;
}
}
编辑
4. 二分/折半查找
/**
* 实现二分查找
* 前提:数组需要排序为有序数组
* 效率较高
* 可使用Arrays工具类
* @param array
* @param key
* @return
*/
public static int binSearch(int[] array,int key){
int mid = 0;
int left = 0;
int right = array.length-1;
while (left<=right){
mid =(left +right)>>>1;
if(key>array[mid]){
left = mid+1;
}else{
if(key<array[mid]){
right = mid -1;
}else {
return mid;
}
}
}
return -1;
}
public static void main(String[] args) {
int[] arr2 = {1, 2, 5, 6, 8, 9, 11};
Arrays.sort(arr2);//默认升序,底层快排
System.out.println(Arrays.binarySearch(arr2, 9));
//使用Arrays工具类
System.out.println(binSearch(arr2, 9));
}
5. 两数之和
class Solution{
public static int[] func3(int[] array, int target) {
int[] ret = new int[2];
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array.length; j++) {
if (array[i] + array[j] == target&&i!=j) {
ret[0] = i;
ret[1] = j;
}
}
}
return ret;
}
}
6. 只出现一次的数字
class Solution{
public static int fun(int[] array) {
int ret = 0;
for (int i = 0; i < array.length; i++) {
ret = ret ^array[i];
}
return ret;
}
}