和为n的连续整数序列

该代码实现了一个寻找所有连续正数序列之和等于给定值n的算法。首先对数组进行排序,然后通过双指针遍历数组,找到满足条件的序列并打印。在找到序列后,跳过相同的元素以避免重复。该算法注重效率,当序列和大于n时,减少右指针;反之,增加左指针。
摘要由CSDN通过智能技术生成

题目描述:输出所有和为n的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序

public void threeSum(int[] nums,int n) {
  if(nums == null || nums.length == 0){
	  return;
  	}
  Arrays.sort(nums);
  for(int i = 0;i < nums.length;i++) {
	  if(nums[i] >= n) {
		  return;
	  }
	  if(i > 0&& arr[i] == arr[i - 1]){
	  continue;
	  }
	  int left = i + 1;
	  int right = nums.length - 1;
	  int sum = 0;
	  while(left < right) {
		  sum = nums[i] + nums[left] + nums[right];
		  if(sum == n) {
			  System.out.println("" + nums[i] + nums[left] + nums[right]);
			  while(left < right&&nums[left] == nums[left + 1]) {
				  left++;
			  }
			  while(left < right&&nums[right] == nums[right - 1]) {
				  right--;
			  }
		  }else if(sum > n) {
			  right --;
		  }else{
			  left++;
		  }
	  	}
  	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值