91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[C# 開發技巧]如何使不符合要求的元素等于離它最近的一個元素

發布時間:2020-08-06 20:25:13 來源:網絡 閱讀:447 作者:LearningHard 欄目:編程語言

一、問題描述

今天在MSDN論壇中看到這樣的一個問題,覺得非常鍛煉思維能力,所以這里記錄下來作為備份,題目的要求是這樣的:

假設有一組字符串數組{"0","0","1","2","3",“0”,"4","0","0"},如何查找使0等于離它最近的且不為0的元素,如果離它最近的不為0的元素有兩個,則等于上一個元素,即想得到重新賦值后這樣的數組{"1","1","1","2","3",“3”,"4","4","4"}

二、實現思路

這里的實現思路摘自論壇中 zjyh26的回復,實現思路為:

  • 1. 首先對數組里面的數字進行一次遍歷,如果當前的值不為“0”把值添加進的結果數組中,否則對它進行處理。

  • 2. 處理不為“0”的值的時候,用一種“等距離比較”的方法,找出等距離內的左右2個值,優先看左邊的值是否為“0”,如果是的話跳過,如果不是的話將結果數組內的當前值替換為此值。

  • 3. 距離(就是代碼里面的j)的最大值為數組長度減去1,遍歷的時候注意i-j的值不小于0,i+j的值要小于數組長度。

具體實現代碼為:

string[] s = new String[9] { "0", "0", "1", "0", "0", "0", "4", "0", "3" };
            string[] result = new string[9];
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i] != "0")
                {
                    result[i] = s[i];
                    continue;
                }
                // j是距離,初始化距離為1
                for (int j = 1; j < s.Length; j++)
                {           
                    if (i - j >= 0)
                    {
                        // 左邊距離為j的元素不等于0時
                        if (s[i - j] != "0")
                        {
                            result[i] = s[i - j];
                            break;
                        }
                    }
                    if (i + j < s.Length)
                    {
                        // 右邊距離為j的元素不等于0時
                        if (s[i + j] != "0")
                        {
                            result[i] = s[i + j];
                            break;
                        }
                    }
                }
            }
            for (int i = 0; i < result.Length; i++)
            {
                Console.WriteLine(result[i]);
            }
               
            Console.ReadLine();

三、運行結果

[C# 開發技巧]如何使不符合要求的元素等于離它最近的一個元素


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

于都县| 阿荣旗| 金阳县| 津南区| 平阳县| 彭泽县| 嵩明县| 蓬莱市| 黄平县| 安义县| 都兰县| 舒城县| 隆子县| 柳林县| 莲花县| 兖州市| 吐鲁番市| 西青区| 婺源县| 南华县| 潞西市| 工布江达县| 阿瓦提县| 亳州市| 新平| 临夏市| 西盟| 遵义市| 莱阳市| 安图县| 金塔县| 白水县| 繁昌县| 博湖县| 犍为县| 徐州市| 西藏| 新余市| 屯门区| 萨迦县| 隆化县|