LeetCode Contains Duplicate III

原创 2015年07月09日 19:46:24

Description:

Given an array of integers, find out whether there are two distinct indices i and j in the array such that the difference between nums[i] and nums[j] is at most t and the difference between i and j is at most k.

Solution:

用一个数据结构,能够维护长度为K的列表,同时又有floor和ceiling功能即可。

这里是用TreeSet,也可以用SortedSet。

import java.util.*;

public class Solution {
	public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
		if (k < 1 || t < 0)
			return false;
		TreeSet<Integer> set = new TreeSet<Integer>();

		int n = nums.length;
		long number;
		for (int i = 0; i < n; i++) {
			if (set.floor((nums[i])) != null) {
				number = set.floor((nums[i]));
				if (number >= nums[i] - t)
					return true;
			}
			if (set.ceiling(nums[i]) != null) {
				number = set.ceiling(nums[i]);
				if (number <= nums[i] + t)
					return true;
			}

			set.add(nums[i]);
			if (i >= k) {
				set.remove(nums[i - k]);
			}
		}

		return false;
	}

	public static void main(String[] args) {
		Solution s = new Solution();
		System.out.println(s.containsNearbyAlmostDuplicate(new int[] { 2, 4 },
				1, 1));
	}
}


【LeetCode-面试算法经典-Java实现】【219-Contains Duplicate II(包含重复元素II)】

【219-Contains Duplicate II(包含重复元素II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月29日 06:36
  • 3242

【LeetCode-面试算法经典-Java实现】【217-Contains Duplicate(包含重复元素)】

【217-Contains Duplicate(包含重复元素)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wang-Jun-C...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月28日 07:00
  • 2693

LeetCode 260 Single Number III(只出现一次的数字 III)(*)

原文给定一个数字数组nums,其中有两个元素只出现一次,而其他所有元素均出现两次。找出这两个只出现一次的元素。例如:给定nums = [1, 2, 1, 3, 2, 5],返回[3, 5]。备注: 1...
  • NoMasp
  • NoMasp
  • 2016年02月18日 15:06
  • 4424

Leetcode 220. Contains Duplicate III

Given an array of integers, find out whether there are two distinct indices i and j in the array suc...
  • xinqrs01
  • xinqrs01
  • 2017年02月10日 14:08
  • 178

Contains Duplicate III - LeetCode 220

题目描述: Given an array of integers, find out whether there are two distinct indices i and j in the ar...
  • bu_min
  • bu_min
  • 2015年06月01日 22:44
  • 442

[LeetCode] Contains Duplicate III

Contains Duplicate III Given an array of integers, find out whether there are two distinct indices ...
  • wangshaner1
  • wangshaner1
  • 2015年06月17日 19:49
  • 1432

[leetcode ]220.Contains Duplicate III

题目: Given an array of integers, find out whether there are two distinct indices i and j in the arra...
  • u014673347
  • u014673347
  • 2015年07月25日 16:19
  • 198

[LeetCode]Contains Duplicate III

QuestionGiven an array of integers, find out whether there are two distinct indices i and j in the a...
  • byamao1
  • byamao1
  • 2017年02月16日 17:08
  • 95

LeetCode-Contains Duplicate III

Given an array of integers, find out whether there are two distinct indices i and j in the array su...
  • bombSKLK
  • bombSKLK
  • 2015年10月11日 11:39
  • 193

【LEETCODE】220-Contains Duplicate III

Given an array of integers, find out whether there are two distinct indices i and j in the array  ...
  • aliceyangxi1987
  • aliceyangxi1987
  • 2015年11月27日 16:42
  • 392
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode Contains Duplicate III
举报原因:
原因补充:

(最多只允许输入30个字)