zoukankan      html  css  js  c++  java
  • 腾讯笔试题-邻值查找

    腾讯笔试题-邻值查找

    考察TreeSetsort item)的使用,set.lower(e)set.higher(e) 返回set中小于e的中最大的数和大于e的中最小的数,如果不存在返回null

    static void solution(int[] a, int n) {
        TreeSet<Integer> set = new TreeSet<>();
        Map<Integer, Integer> map = new HashMap<>();
        set.add(a[0]); map.put(a[0], 0);
        for(int i=1; i < n; i++) {
            int idx = -1;
            if(set.lower(a[i]) != null) {
                int t = set.lower(a[i]);
                idx = map.get(t);
            }
            if(set.higher(a[i]) != null) {
                int t = set.higher(a[i]);
                if(idx == -1) idx = map.get(t);
                else {
                    int x = Math.abs(t-a[i]);
                    int y = Math.abs(a[idx]-a[i]);
                    if(x == y) 
                        idx = (a[idx] <= t ? idx : map.get(t));
                    else if(x < y) 
                        idx = map.get(t);
                }
            }
            map.put(a[i], i);
            set.add(a[i]);
            System.out.println(Math.abs(a[idx]-a[i]) + " "+ (map.get(a[idx])+1));	
    
        }
    }
    
  • 相关阅读:
    Sql Server增删改查字段的语法
    Django-2
    Django-1
    Django自学历程
    前端之bootstrap框架
    前端之JQuery
    前端之DOM
    前端之BOM
    前端之JavaScript
    前端之css
  • 原文地址:https://www.cnblogs.com/lixyuan/p/12918704.html
Copyright © 2011-2022 走看看