C#のシーケンスで欠落している番号を検索します
リストを設定します。
List<int> myList = new List<int>(){1, 2, 3, 5, 8, 9};
ここで、最初と最後の要素を取得します-
int a = myList.OrderBy(x => x).First(); int b = myList.OrderBy(x => x).Last();
新しいリストで、すべての要素を取得し、Exceptを使用して欠落している番号を取得します-
List<int> myList2 = Enumerable.Range(a, b - a + 1).ToList(); List<int> remaining = myList2.Except(myList).ToList();
完全なコードを見てみましょう-
例
using System.Collections.Generic; using System; using System.Linq; public class Program { public static void Main() { List<int> myList = new List<int>(){1, 2, 3, 5, 8, 9}; Console.WriteLine("Numbers... "); foreach(int val in myList) { Console.WriteLine(val); } int a = myList.OrderBy(x => x).First(); int b = myList.OrderBy(x => x).Last(); List<int> myList2 = Enumerable.Range(a, b - a + 1).ToList(); List<int> remaining = myList2.Except(myList).ToList(); Console.WriteLine("Remaining numbers... "); foreach (int res in remaining) { Console.WriteLine(res); } } }
出力
Numbers... 1 2 3 5 8 9 Remaining numbers... 4 6 7
-
C++の配列で最も近い数を検索します
n個の要素を持つ配列Aがあるとします。そして、要素はソートされます。与えられた整数に最も近い値を見つける必要があります。配列に重複する値と負の数が含まれている可能性があります。したがって、配列が[2、5、6、7、8、8、9]のようで、ターゲット番号が4の場合、最も近い要素は5です。 与えられた配列をトラバースすることでこれを解決し、現在の要素とすべての要素の絶対差を追跡できます。最後に、絶対差が最小の要素を返します。 例 #include<iostream> #include<list> using namespace std; int getNearest(int
-
C++で有理数のLCMを見つける
ここでは、有理数のLCMを見つける方法を説明します。有理数のリストがあります。リストが{2/7、3 / 14、5 / 3}のようであるとすると、LCMは30/1になります。 この問題を解決するには、すべての分子のLCMを計算し、次にすべての分母のgcdを計算し、次に有理数のLCMを計算する必要があります- $$ LCM =\ frac {LCM \:of \:all \:𝑛𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟𝑠} {GCD \:of \:all \:𝑑𝑒𝑛𝑜𝑚𝑖𝑖 例 #include <iostream> #include <vector> #inc