Skip to content

数组&排序

笔记-数组倒序遍历 🚀

java
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class MyTest {
    @Test
    public void test() {
        String[] strs = {"1", "2", "3"};
        for (int i = strs.length - 1; i > -1; i--) {
            log.info(strs[i]);
        }
    }
}

输出

21:20:53.820 [main] INFO MyTest -- 3
21:20:53.826 [main] INFO MyTest -- 2
21:20:53.827 [main] INFO MyTest -- 1

笔记-Arrays排序 🚀

基本类型只能升序排列

java
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.Arrays;

@Slf4j
public class MyTest {
    @Test
    public void test() {
        int[] ints = {3, 5, 1, 2, 4};
        Arrays.sort(ints);
        // Arrays.parallelSort(ints);
        log.info(Arrays.toString(ints));
    }
}

输出

21:39:22.410 [main] INFO MyTest -- [1, 2, 3, 4, 5]

NB59 简单 草原牛群集合 🚀

简单 时间限制:5秒 空间限制:256M

描述

在草原上,有一群牛分散在不同的位置,他们用整数表示每头牛的位置坐标。牧民召唤了一只牧犬来驱赶牛群。当牧犬在某个位置时,牠会发出召唤牛群集合的信号(用一个整数 val 表示),此时,与牧犬相同位置的所有牛将会集合到其他位置。你需要移除数组中与 val 相同的元素,并返回移动后的数组与剩余元素数量。

要求在原数组的基础上完成移除任务,不引入额外的数组空间。操作的空间复杂度必须为 O(1)。牛群的顺序可以改变。不用考虑新数组长度之外的位置元素。

示例1

输入:

[2, 1, 3, 1, 1, 5],1

返回值:

3

备注:

必须在原数组上修改,不返回原数组,但要检验。
0 <= nums.length <= 100
0 <= nums[i] <= 100
0 <= val <= 100

我的方案

java
import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param val int整型
     * @return int整型
     */
    public int remove_cows (int[] nums, int val) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            if (map.containsKey(num)) {
                map.put(num, map.get(num) + 1);
            } else {
                map.put(num, 1);
            }
        }
        return nums.length - (map.containsKey(val) ? map.get(val) : 0);
    }
}