BOBO老师,leetcode 220. 存在重复元素 III 求指教

来源:1-1 欢迎学习《玩转数据结构》

qq_山上山_0

2020-01-09

  1. 测试用例[1,2] 0 ,1 输出true,预期结果false;不是很理解啊,为什么错
  2. 官方解答觉得没必要双层循环啊(2叉树的那个看不懂)
  3. 代码如下(c#)
 public class Solution
    {
        public bool ContainsNearbyAlmostDuplicate(int[] nums, int k, int t)
        {
            if ((nums == null || nums.Length <= 0) && (k != 0 || t != 0))
                return false;
            if (nums.Length == 1 && nums[0] == 0 && k == 0 && t == 0)
                return false;
            if (nums.Length < k)
                return false;
            int count = nums.Length;
            for (int i = 0; i < count; i++)
            {
                if ((i + k) > count - 1)
                    break;
                else
                {
                    if (Math.Abs(nums[i] - nums[i + k]) <= t)
                        return true;
                }
            }
            for (int i = count - 1; i >= 0; i--)
            {
                if (i - k < 0)
                    break;
                else
                {
                    if (Math.Abs(nums[i] - nums[i - k]) <= t)
                        return true;
                }
            }
            return false;
        }
    }
写回答

1回答

liuyubobobo

2020-01-09

抱歉,我手里没有 C# 编译器,我本身也不使用 C# 语言,无法帮你调试程序。


程序并不长,测试用例这么小,只是一个有两个元素的数组,在本机单步跟踪一下,一步一步运行,看看你的程序为什么会得到 true。观察自己的程序,在每一步,数据是如何变化的?为什么这么变?和自己以为的是否一致?如果不一致,自己哪里想错了?debug 不仅仅是程序员的基本功,更重要的是,进步就发生在这个过程中哦。


加油!:) 

0
3
liuyubobobo
回复
qq_山上山_0
嗯嗯,有的时候 leetcode 的中文翻译确实比较坑。如果时间允许的话,可以考虑直接看英文版。还是顺便练习了英语。Leetcode 的题目表达,大多数都是比较简单的。继续加油!:)
2020-01-10
共3条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程