gpt4 book ai didi

c# - 获取 null 作为整数类型的默认值

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:50 25 4
gpt4 key购买 nike

Leetcode Discussion 中的一种算法使用二叉搜索树来保存输入数组中的一系列值,以检查该数组是否包含最多相差 t 的值,并且它们的索引彼此最多相差 k。

Java:

public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) {
if (nums == null || nums.length == 0 || k <= 0) {
return false;
}

final TreeSet<Integer> values = new TreeSet<>();
for (int ind = 0; ind < nums.length; ind++) {

final Integer floor = values.floor(nums[ind] + t);
final Integer ceil = values.ceiling(nums[ind] - t);

if ((floor != null && floor >= nums[ind])
|| (ceil != null && ceil <= nums[ind])) {
return true;
}

values.add(nums[ind]);
if (ind >= k) {
values.remove(nums[ind - k]);
}
}
return false;
}

我正在努力让它在 C# 中工作。只要 LastOrDefaultFirstOrDefault 方法默认返回 0,此代码就不起作用。如何变通将 null 作为默认值?

C#:

public bool ContainsNearbyAlmostDuplicate(int[] nums, int k, int t)
{
if (nums == null || nums.Length < 2 || k < 1) return false;

SortedSet<long> set = new SortedSet<long>();

for (int i = 0; i < nums.Length; i++)
{
long l = (long)nums[i];

long floor = set.LastOrDefault(n => n <= l);
long ceil = set.FirstOrDefault(n => n >= l);

if ((l - floor <= t) || (ceil - l <= t))
return true;

set.Add(l);
if (i >= k) set.Remove((long)nums[i - k]);
}
return false;
}

最佳答案

一种方法是用可为空的 longs 声明你的集合

var set = new SortedSet<long?>();

或者您可以不使用 FirstOrDefault 并执行如下操作:

var greaterOrEqualToOne = set.Where(n => n >= 1);

long? ceil = greaterOrEqualToOne.Any() ? greaterOrEqualToOne.First() : null;

还有另一种方法,首先将它们转换为 long?:

long? ceil = set.Select(n => (long?)n).FirstOrDefault(n => n >= 1);

关于c# - 获取 null 作为整数类型的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com