leetcode39

Posted AsenYang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode39相关的知识,希望对你有一定的参考价值。

public class Solution
    {
        List<IList<int>> list = new List<IList<int>>();//全部记录
        List<int> records = new List<int>();//一条记录        
        bool bk = false;
        private void BackTrack(List<int> candidates, int target, int sum)
        {
            if (sum == target)
            {
                int[] temp = new int[records.Count];
                records.CopyTo(temp);
                bool same = false;
                foreach (var l in list)
                {
                    if (l.Count == temp.Length)
                    {
                        var l1 = l.OrderBy(x => x).ToList();
                        var l2 = temp.OrderBy(x => x).ToList();
                        var samecount = 0;
                        for (int x = 0; x < l1.Count; x++)
                        {
                            if (l1[x] == l2[x])
                            {
                                samecount++;
                            }
                        }
                        if (samecount == l.Count)
                        {
                            same = true;
                            break;
                        }
                    }                    
                }
                if (!same)
                {
                    list.Add(temp.ToList());
                }
                bk = true;
                return;
            }
            else if (sum < target)
            {
                bk = true;
                for (int position = 0; position < candidates.Count; position++)
                {
                    var cur = candidates[position];
                    sum += cur;
                    records.Add(cur);
                    BackTrack(candidates, target, sum);
                    //回溯
                    records.RemoveAt(records.Count - 1);
                    sum -= cur;
                    if (bk)
                    {
                        bk = false;
                        break;
                    }
                }
            }
            else
            {
                bk = true;
                return;
            }
        }

        public IList<IList<int>> CombinationSum(int[] candidates, int target)
        {
            var can = candidates.OrderBy(x => x).ToList();
            BackTrack(can, target, 0);
            return list;
        }
    }

 

以上是关于leetcode39的主要内容,如果未能解决你的问题,请参考以下文章

PHP常用代码片段

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

VSCode自定义代码片段——CSS动画

VSCode自定义代码片段3——url大全

VSCode自定义代码片段3——url大全