LeetCode—315 Count of Smaller Numbers After Self

本文介绍了一种使用二分插入排序算法解决LeetCode题目问题的方法,并提供了详细的Java实现代码。该方法通过从右向左进行二分插入排序并记录插入位置来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好久没做出题目来了。

思路:好蠢的一题!从右往左进行二分插入排序,把插入的位置记录下来即可。。。好蠢!


GitHub地址:https://github.com/corpsepiges/leetcode

Java版本和Python版本,求star。


public class Solution {
    public List<Integer> countSmaller(int[] nums) {
    	List<Integer> list=new ArrayList<Integer>();
    	int length=nums.length;
        if (length==0) {
			return list;
		}
        List<Integer> ars=new ArrayList<Integer>();
        ars.add(nums[length-1]);
        list.add(0);
        for (int i = length-2; i >=0; i--) {
        	int test=nums[i];
        	int end=ars.size()-1;
			int start=0;
			int mid=(start+end)/2;
			while (end-start>1) {
				if (test<=ars.get(mid)) {
					end=mid;
				}else {
					start=mid;
				}
				mid=(start+end)/2;
			}
			int res=end+1;
			if (test<=ars.get(start)) {
				res=start;
			}else if (test<=ars.get(end)) {
				res=end;
			}
			ars.add(res,test);
			list.add(0,res);
		}
        return list;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值