プログラミング問題解法集
可能な限り簡潔にします。
CF679E
直接代入と修正のタイミングが正しいことがわかりますので、書き方について説明します。区間を良い数に変える操作を「加算」と呼びます。
既に区間代入が行われた区間にUpというマークを付けると、その区間とその子区間は1つの点と見なせます。そのため、修正の複雑さは単点修正と同じになります。
したがって、加算操作は次のように記述 ...
6月21日 23:23 投稿
C++における二分探索木の実装と操作
二分探索木とは
二分探索木(Binary Search Tree: BST)は、以下の条件を満たす二分木構造です:
左部分木に含まれるノードの値は、常に親ノードの値より小さい
右部分木に含まれるノードの値は、常に親ノードの値より大きい
左右の部分木もまた二分探索木を満たす
基本操作
探索(Search)
探索操作は以下のように行われます:
ルートノードから比較を開始します
探索 ...
5月30日 20:39 投稿
配列操作と木構造上の色付け問題の解法
配列内要素の隣接関係判定
与えられた配列において、特定の2つの要素xとyが隣接しているかどうかを判定する問題です。
#include<iostream>
#include<vector>
using namespace std;
bool checkAdjacent(vector<int>& arr, int target1, int target2) {
int n = arr.size();
for(int i = 0; i < n; i++) {
if(arr[i] == target1) {
...
5月26日 06:39 投稿
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 投稿