指定された値より大きいリスト内のすべての値をチェックするC#プログラム
例えば、次の整数型配列の中から、80より大きい値を持つ要素をすべて見つけたい場合を考えてみましょう。
int[] arr = new int[] {55, 100, 87, 45};基本的な考え方
これを実現するには、配列の長さ分だけループ処理を行い、各要素が指定された値(ここでは res = 80)より大きいかどうかを条件判定します。条件を満たす要素だけを出力すればよいので、ロジックは非常にシンプルです。
for (int i = 0; i < arr.Length; i++) {
if (arr[i] > res) {
Console.WriteLine(arr[i]);
}
}サンプルコード
以下に、上記のロジックを使った完全なプログラムを示します。
using System;
namespace Demo {
public class Program {
public static void Main(string[] args) {
int[] arr = new int[] {
55,
100,
87,
45
};
// 指定された整数
int res = 80;
Console.WriteLine("Given Integer {0}: ", res);
Console.WriteLine("Numbers larger than {0} = ", res);
for (int i = 0; i < arr.Length; i++) {
if (arr[i] > res) {
Console.WriteLine(arr[i]);
}
}
}
}
}実行結果
Given Integer 80: Numbers larger than 80 = 100 87
ポイント解説
- 比較演算子: 今回は「より大きい」を判定するため
>を使用します。「以上」にしたい場合は>=に変更してください。 - ループ処理:
arr.Lengthを使うことで、配列の要素数が変わってもコードを修正せずに済みます。 - 応用: LINQ を使えば
arr.Where(x => x > res)のように、より簡潔に同じ処理を書くことも可能です。
-
二分探索木(BST)の全ノードに、それより大きい値の合計を加算するアルゴリズム
本記事では、二分探索木(BST)の各ノードに対して、「そのノードより大きい値を持つすべてのノードの値の合計」を加算して更新するという興味深い問題を取り上げます。処理前後の木は、以下の図のように変化します。例えば、元の木で値 50 のノードは、それより大きい値(60、70、80)の合計 210 を加算して 260 に更新されます。一方、最大値である 80 のノードは、それより大きい値が存在しないため 80 のまま変わりません。アルゴリズムの考え方この問題は、通常の通り順(inorder)走査を逆にした「右部分木 → 根 → 左部分木」の順序で木を走査することで、効率的に解くことができます。この順
-
Pythonで二分木のすべてのノードの値が同じかどうかをチェックするプログラム
問題の概要二分木が与えられたとき、その木に含まれるすべてのノードが同じ値を持っているかどうかを判定することを考えます。例えば、次のような二分木が入力として与えられた場合、すべてのノードが同じ値を持っているため、出力は True になります。解決のアプローチこの問題は、再帰を使ってシンプルに解くことができます。以下の手順に従います。solve() 関数を定義します。この関数は root(現在のノード)と val(比較対象の値)を引数として受け取ります。root が null(None)の場合は、True を返します。空の部分木は条件を満たしているとみなせるためです。val が未定義の場合は、ro