Beispiel #1
0
        public void FourSum_Test()
        {
            var nums   = new[] { 1, 0, -1, 0, -2, 2 };
            var target = 0;

            var expected = new List <List <int> >
            {
                new List <int>()
                {
                    -1, 0, 0, 1
                },
                new List <int>()
                {
                    -2, -1, 1, 2
                },
                new List <int>()
                {
                    -2, 0, 0, 2
                },
            };

            var result = FourSum.FourSumFunc(nums, target);

            Assert.AreEqual(expected.Count, result.Count);
        }
Beispiel #2
0
        public void FourSum2()
        {
            FourSum fs = new FourSum ();

            foreach (var l in fs.ComputeFourSums (new int[] {1, 2, 3, 4, 5, 6, 7, 8, 1, -1, 3, -2, 11, 12, 23, 14, 10}, 20)) {
                Console.WriteLine (string.Join (", ", l));
            }
        }
Beispiel #3
0
        public void FourSum_large()
        {
            var nums   = new[] { 91277418, 66271374, 38763793, 4092006, 11415077, 60468277, 1122637, 72398035, -62267800, 22082642, 60359529, -16540633, 92671879, -64462734, -55855043, -40899846, 88007957, -57387813, -49552230, -96789394, 18318594, -3246760, -44346548, -21370279, 42493875, 25185969, 83216261, -70078020, -53687927, -76072023, -65863359, -61708176, -29175835, 85675811, -80575807, -92211746, 44755622, -23368379, 23619674, -749263, -40707953, -68966953, 72694581, -52328726, -78618474, 40958224, -2921736, -55902268, -74278762, 63342010, 29076029, 58781716, 56045007, -67966567, -79405127, -45778231, -47167435, 1586413, -58822903, -51277270, 87348634, -86955956, -47418266, 74884315, -36952674, -29067969, -98812826, -44893101, -22516153, -34522513, 34091871, -79583480, 47562301, 6154068, 87601405, -48859327, -2183204, 17736781, 31189878, -23814871, -35880166, 39204002, 93248899, -42067196, -49473145, -75235452, -61923200, 64824322, -88505198, 20903451, -80926102, 56089387, -58094433, 37743524, -71480010, -14975982, 19473982, 47085913, -90793462, -33520678, 70775566, -76347995, -16091435, 94700640, 17183454, 85735982, 90399615, -86251609, -68167910, -95327478, 90586275, -99524469, 16999817, 27815883, -88279865, 53092631, 75125438, 44270568, -23129316, -846252, -59608044, 90938699, 80923976, 3534451, 6218186, 41256179, -9165388, -11897463, 92423776, -38991231, -6082654, 92275443, 74040861, 77457712, -80549965, -42515693, 69918944, -95198414, 15677446, -52451179, -50111167, -23732840, 39520751, -90474508, -27860023, 65164540, 26582346, -20183515, 99018741, -2826130, -28461563, -24759460, -83828963, -1739800, 71207113, 26434787, 52931083, -33111208, 38314304, -29429107, -5567826, -5149750, 9582750, 85289753, 75490866, -93202942, -85974081, 7365682, -42953023, 21825824, 68329208, -87994788, 3460985, 18744871, -49724457, -12982362, -47800372, 39958829, -95981751, -71017359, -18397211, 27941418, -34699076, 74174334, 96928957, 44328607, 49293516, -39034828, 5945763, -47046163, 10986423, 63478877, 30677010, -21202664, -86235407, 3164123, 8956697, -9003909, -18929014, -73824245 };
            var target = -236727523;

            var result = FourSum.FourSumFunc(nums, target);

            Assert.AreEqual(2, result.Count);
        }
Beispiel #4
0
        public void FourSum_duplicate_Test()
        {
            var nums   = new[] { -3, -2, -1, 0, 0, 1, 2, 3 };
            var target = 0;

            var expected = new List <List <int> >
            {
                new List <int>()
                {
                    -3, -2, 2, 3
                },
                new List <int>()
                {
                    -3, -1, 1, 3
                },
                new List <int>()
                {
                    -3, 0, 0, 3
                },
                new List <int>()
                {
                    -3, 0, 1, 2
                },
                new List <int>()
                {
                    -2, -1, 0, 3
                },
                new List <int>()
                {
                    -2, -1, 1, 2
                },
                new List <int>()
                {
                    -2, 0, 0, 2
                },
                new List <int>()
                {
                    -1, 0, 0, 1
                },
            };

            var result = FourSum.FourSumFunc(nums, target);

            Assert.AreEqual(expected.Count, result.Count);
            Assert.IsTrue(expected.Any(q => result.Any(x => x.Count == q.Count && x.Any(q.Contains))));
        }
Beispiel #5
0
        public void FourSum_single_result()
        {
            var nums   = new[] { 5, 5, 3, 5, 1, -5, 1, -2 };
            var target = 4;

            var expected = new List <List <int> >
            {
                new List <int>()
                {
                    -5, 1, 3, 5
                },
            };

            var result = FourSum.FourSumFunc(nums, target);

            Assert.AreEqual(expected.Count, result.Count);
        }
Beispiel #6
0
        // 见 Measurement.FourSum 类
        static void Main(string[] args)
        {
            // char[] split = new char[1] { '\n' };
            // string[] testcases = TestCase.Properties.Resources._1Kints.Split(split, StringSplitOptions.RemoveEmptyEntries);
            // long[] a = new long[testcases.Length];
            // for (int i = 0; i < testcases.Length; i++)
            // {
            //     a[i] = long.Parse(testcases[i]);
            // }

            var a = new long[20] {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10
            };

            var timer = new Stopwatch();

            FourSum.PrintAll(a);
            Console.WriteLine(timer.ElapsedTime());
        }
Beispiel #7
0
        public void Test4Sum()
        {
            var r = FourSum.S1(new int[] { 1, 0, -1, 0, -2, 2 }, 0);

            Assert.AreEqual(r.Count, 3);
        }
 public void BeforeEach()
 {
     FourSum = new FourSum();
 }