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