• 遇到的比较好的算法 收藏一下


    1、给定数据进行分组

    public void Test1()
    {
    var dataList = new[] {"a1:b1:c1", "a1:b2:c2:d1:", "a2:b2:c2:d2"}; 
    var root = new List<dynamic>();
     var dict = new Dictionary<string, dynamic>();//字典,方便搜索node 
    foreach (var data in dataList) 
    { 
    dynamic parent = null; 
    foreach (var name in data.Split(':')) 
    { 
    dict.TryGetValue(name, out var current); 
    if (current != null) 
    { 
    parent = current;
     continue;
     } 
    var node = new {name, child = new List<dynamic>()}; 
    if (parent == null)
     { 
    root.Add(node);
     } 
    else 
    {
     parent.child.Add(node);
     } 
    parent = node; 
    dict.Add(name, node);
     }
     } 
    Console.WriteLine(DefaultJsonSerializer.Instance.SerializeObject(root)); 
    }

    结果集合如下:

    "[{"name":"a1", "child":[{"name":"b1", "child":[{"name":"c1", "child":[]}]},{"name":"b2", "child":[{"name":"c2", "child":[{"name":"d1", "child":[{"name":"", "child":[]}]},{"name":"d2", "child":[]}]}]}]},{"name":"a2", "child":[]}]"

    2、动态规划法

    题目描述:

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

    给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。(在力扣网站刷题见到的一个很好的解法思想)

    示例: 输入: [2,7,9,3,1]
    输出: 12
    解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
      偷窃到的最高金额 = 2 + 9 + 1 = 12 。

    public static int Rob(int[] nums)
            {
                int prevMax = 0;
                int currMax = 0;
                int temp = 0;
                foreach (var x in nums)
                {
                    temp = currMax;
                    currMax = Math.Max(prevMax + x, currMax);
                    prevMax = temp;
                }
                return currMax;
            }

    感觉比较好,记录一下;

  • 相关阅读:
    configure: error: Unable to use libevent (libevent check failed)
    ZABBIX修改用户名密码
    《平凡的世界》
    Directory "/usr/share/zabbix/assets" must be writable.
    《人生第一次》纪录片
    前端语言开发模板
    cometd源码阅读SecurityPolicy授权模块(十二)
    设计思路已读未读设计
    cometd源码阅读Extension扩展(十)
    计算2个时间相差多少天多少分钟多少秒
  • 原文地址:https://www.cnblogs.com/wwr01/p/11928219.html
Copyright © 2020-2023  润新知