Pythonの関数とモジュールの復習
1. 関数
コードを書くアプローチは、手続き型プログラミングから関数型プログラミング、そしてオブジェクト指向プログラミングへと進化してきました。
1.1 関数の基本
関数は、特定のタスクを実行するためのコードブロックです。引数を受け取り、結果を返すことができます。
def sample_function(param1, param2):
# 関数の処理
pass
result = sample_function(1 ...
6月6日 00:27 投稿
関数によるモジュール化プログラミングの実践
関数の必要性と利点
プログラムが複雑化し、コード量が増加するにつれて、すべての処理をmain関数内で実装すると、保守性や可読性が著しく低下します。また、同じ処理を複数回書く必要がある場合、コードが冗長になるだけでなく、修正や拡張も困難になります。
こうした問題を解決するには、よく使う処理を関数として独立させ、必要に応じて呼び出すモジュール化プログラミ ...
6月2日 18:44 投稿
深さ優先探索(DFS)の実装と応用
基本原理:
深さ優先探索は、開始ノードから出発し、一つの分岐を深く進み続けます。葉ノードまたは進めなくなったノードに到達するまで探索を続けます。
探索が葉ノードまたは進めなくなったノードに到達した場合、未探索の前のノードに戻り、他の分岐の探索を続けます。
既に訪問したノードをマークすることで、同じ経路での重複訪問を避けます。
DFSアルゴリズムのス ...
5月31日 11:33 投稿
Javaリストデータの順列生成アルゴリズム
Javaにおけるリスト要素の順列生成
与えられたリストの全要素を使用する順列(全ての可能な並び順)を生成する方法について解説します。ここでは再帰的アプローチを用いた実装を示します。
実装コード
import java.util.ArrayList;
import java.util.List;
public class PermutationGenerator {
public static List<List<Integer>> generateAllPerm ...
5月22日 20:59 投稿
リンクリスト操作の実践:ノード交換、削除、交点検出、循環検出
リンクリストのノード交換
反復解法
ListNode* swapPairs(ListNode* head) {
if(!head || !head->next) return head;
ListNode dummy(0);
dummy.next = head;
ListNode* prev = &dummy;
ListNode* curr = head;
while(curr && curr->next) {
ListNode* nextNode = curr->next;
// ノード交換
prev->n ...
5月20日 14:29 投稿
アルゴリズム問題 - バックトラッキング手法
1.バックトラッキングの理論的基礎
1.1バックトラッキングとは何か
バックトラッキングは探索アルゴリズムの一種であり、再帰処理に基づいて動作します。
再帰呼び出しの結果としてバックトラッキングが発生するため、再帰があれば必ずバックトラッキングも存在します。
1.2バックトラッキングの性能
バックトラッキングは計算効率が悪いという特徴があります。これは、す ...
5月20日 01:32 投稿
LeetCode 二分木問題集(その2)
101 対称二分木
二分木の根ノード root が与えられたとき、木が対称構造か判定する。
class Solution {
public boolean isSymmetric(TreeNode root) {
if (root == null) return true;
return checkNodes(root.left, root.right);
}
private boolean checkNodes(TreeNode leftNode, TreeNode rightNode) {
if (leftNode == null ...
5月18日 15:41 投稿
LeetCode解説:216.組合せ総和IIIと17.電話番号の文字列組み合わせ [バックトラッキング編]
LeetCode 216.組合せ総和III
問題リンク:216.組合せ総和III
問題説明
1から9までの数字からk個の数字を選び、その合計がnとなるすべての有効な組み合わせを見つけます。以下の条件を満たす必要があります:
使用できる数字は1から9まで
各数字は最大で1回まで使用可能
結果には重複する組み合わせを含めない
例1:
入力:k = 3, n = 7
出力: [[1,2,4]]
説明: 1 + 2 + ...
5月18日 15:03 投稿
素数和组合问题の解法
問題概要
与えられたn個の整数と整数k(k < n)があり、その中からk個の数を選んで和をとったときに、その和が素数になる組み合わせ数を求める問題。
例としてn=4, k=3で、数列が3,7,12,19のとき、選べる組み合わせは4通りある:
3+7+12 = 22
3+7+19 = 29
7+12+19 = 38
3+12+19 = 34
このうち素数は29のみなので、出力は1となる。
入出力形式
入力形式:
4 3 ...
5月14日 23:45 投稿
Pythonでフィボナッチ数列を応用した階段の登り方を求解する
問題概要と考察
この問題では、n段の階段を1段または2段ずつ登る場合の、登り方の総数を求める必要があります。各段数における解を観察すると、フィボナッチ数列と同じパターンに従っていることが分かります。
1段:1通り
2段:2通り(1+1 または 2)
3段:3通り(1+1+1、1+2、2+1)
4段:5通り(1+1+1+1、1+1+2、1+2+1、2+1+1、2+2)
つまり、n段目までの登り方の総数 ...
5月14日 19:00 投稿