数组
寻找数组中第二小的元素
//寻找数组中第二小的元素
@Test
void test1() {
int arr[] = {-87, -97, 23, 90, 12, -87, -87};
int first = Integer.MAX_VALUE;//最小值
int second = Integer.MAX_VALUE;//第二小
for (int i : arr) {
if (i < first) {
second = first;
first = i;
} else if (i < second && i != first) {
second = i;
}
}
System.out.println(first+"---"+second);
}
找到数组中第一个不重复出现的整数
// 找到数组中第一个不重复出现的整数
@Test
void test2(){
int arr[] = {-87, -97, 23, 90, 12, -87, -87};
Map<Integer, Integer> map = new LinkedHashMap<>();
for (int i : arr) {
if (map.containsKey(i)) {
map.put(i, map.get(i) + 1);
}else{
map.put(i,1);
}
}
for (int i : arr) {
if (map.get(i)==1){
System.out.println(i);
break;
}
}
}
// 如果是大量数据只有一个数字不重复
@Test
void test(){
int [] arr={1,1,2,2,3,4,4,5,5,6,6,7,7};
int num=arr[0];
for (int i = 1; i < arr.length; i++) {
num^=arr[i];
}
System.out.println(num);
}
合并两个有序数组
//合并两个有序数组
@Test
void test4() {
int[] arr1 = {1, 1, 2, 2, 3, 4, 4, 5, 5, 6, 6, 7, 7};
int[] arr2 = {-97, -87, -87, -87, 12, 23, 90};
int[] arr = new int[arr1.length + arr2.length];
int a = 0, b = 0;
for (int i = 0; i < arr.length; i++) {
if (a < arr1.length && b < arr2.length) {
if (arr1[a] < arr2[b]) {
arr[i] = arr1[a];
a++;
} else {
arr[i] = arr2[b];
b++;
}
} else if (a < arr1.length) {
arr[i] = arr1[a];
a++;
} else if (b < arr2.length) {
arr[i] = arr2[b];
b++;
}
}
System.out.println(Arrays.toString(arr));
}
重新排列数组中的正值和负值
@Test
void test5() {
int[] arr = {10, -2, 5, 8, -4, 2, -3, 7, 12, -88, -23, 35};
int left = 0, right = arr.length - 1;
while (left <= right && left <= arr.length - 1 && right >= 0) {
while (arr[left] < 0) {
left++;
}
while (arr[right] >= 0) {
right--;
}
if (left >= right || left == arr.length || right == 0) {
break;
}
int temp = 0;
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
System.out.println(Arrays.toString(arr));
}
保证相对顺序
@Test
void test7(){
int[] arr = {10, -2, 5, 8, -4, 2, -3, 7, 12, -88, -23, 35};
int[] nums=new int[arr.length];
int a = 0;
for (int i : arr) {
if (i<0){
a++;
}
}
int b=0;
for (int i : arr) {
if (i<0){
nums[b++]=i;
continue;
}
nums[a++]=i;
}
System.out.println(Arrays.toString(nums));
}