所以说,我想练练线段树来着 但是一看这题,二分查找不就时间够了 结果写了个二分查找就过了 emmm继续找线段树题去 import java.util.*; public class Solution { public ArrayList<Integer> smallerCount (ArrayList<Integer> nums) { ArrayList<Integer> list = new ArrayList<Integer>(); ArrayList<Integer> ans = new ArrayList<Integer>(); for (int i = nums.size()-1; i >= 0; i--) { int num = nums.get(i); ans.add(bs(list, num)+1); if(list.size()==0) list.add(num); else list.add(bs(list, num)+1, num); } Collections.reverse(ans); return ans; } static int bs(ArrayList<Integer> list, int num) { if(list.size()==0) return -1; int left = 0; int right = list.size()-1; while(left<right) { int mid = (left + right+1)/2; if(list.get(mid) < num) left = mid; else right = mid -1; } if(list.get(0) >= num) return -1; return left; } }