当前位置: 首页 > 面试经验 >

9.1深信服开发岗笔试

优质
小牛编辑
125浏览
2023-03-28

9.1深信服开发岗笔试

C++岗,但是只会Java,C++选择填空看不懂。做的不好。。看运气了。。
算法最后一题比较难,没时间做了

1.数组前两个数比较,求最大的。然后依次往后比较,求连续k轮胜出的元素。
public class Q1 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String[] arr = str.split(" ");
        long[] nums = new long[arr.length - 1];
        for(int i = 0;i < nums.length;i++){
            nums[i] = Long.parseLong(arr[i]);
        }
        int k = Integer.parseInt(arr[arr.length - 1]);
        long maxVal = nums[0];
        Map<Long,Integer> map = new HashMap<>();
        for(int i = 1;i < nums.length;i++){


             maxVal = Math.max(maxVal,nums[i]);
            map.put(maxVal,map.getOrDefault(maxVal,0) + 1);
        }
        if(k >= nums.length){
            long m = getMax(nums);
            System.out.println(m);
        }else if(k < nums.length){
            Set<Long> set = map.keySet();
            for(long se:set){
                int val = map.get(se);
                if(val >= k){
                    System.out.print(se);
                }
            }
        }
    }
    public static long getMax(long[] nums){
        long max = nums[0];
        for(long num : nums){
            if(max < num){
                max = num;
            }
        }
        return max;
    }

}
2.求数组中最长的连续子序列。
import java.util.*;
public class Q5 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        long[] nums = new long[n];
        for(int i = 0;i < nums.length;i++){
            nums[i] = scan.nextLong();
        }
        Arrays.sort(nums);
        Set<Long> set = new HashSet<>();
        for(long num:nums){
            set.add(num);
        }

        long count = 0;
        for(long num : set){
            if(!set.contains(num - 1)){
                long current = num;
                while(set.contains(current + 1)){
                    current ++;
                }
                count = Math.max(count,current - num + 1);
            }
        }
        System.out.println(count);
    }
}



#深信服笔试题#
 类似资料: