LeetCode Weekly Contest 144 3問目 - Delete Nodes And Return Forest [1110]

Source

LeetCode Weekly Contest 144
問題文

問題概要

省略

解法

省略

cLayversion 20190706-1)のコード [C++に変換後]

#include<bits/stdc++.h>
using namespace std;
int del[1111];

class Solution{
  public:
  vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete){
    int i, j, k;
    vector<TreeNode*> res, t1, t2;
    vector<int> nul;
    for(i=0;i<1001;i++){
      del[i] = 0;
    }
    for(i=0;i<to_delete.size();i++){
      del[to_delete[i]] = 1;
    }
    if(root->left != NULL){
      t1 = delNodes(root->left, to_delete);
    }
    if(root->right != NULL){
      t2 = delNodes(root->right, to_delete);
    }
    if(del[root->val]){
      for(i=0;i<t1.size();i++){
        res.push_back(t1[i]);
      }
      for(i=0;i<t2.size();i++){
        res.push_back(t2[i]);
      }
    }
    else{
      k = t1.size();
      if(k > 0 && root->left == t1[k-1]){
        t1.pop_back();
      }
      else{
        root->left = NULL;
      }
      k = t2.size();
      if(k > 0 && root->right == t2[k-1]){
        t2.pop_back();
      }
      else{
        root->right = NULL;
      }
      for(i=0;i<t1.size();i++){
        res.push_back(t1[i]);
      }
      for(i=0;i<t2.size();i++){
        res.push_back(t2[i]);
      }
      res.push_back(root);
    }
    return res;
  }
}
;

// cLay varsion 20190706-1

// --- original code ---
// int del[1111];
// 
// class TreeNode {
// };
// 
// class Solution {
// public:
//   vector<TreeNode*> delNodes(TreeNode* root, vector<int>& to_delete) {
//     int i, j, k;
//     vector<int> nul;
//     vector<TreeNode*> res, t1, t2;
// 
//     rep(i,1001) del[i] = 0;
//     rep(i,to_delete.size()) del[to_delete[i]] = 1;
// 
//     if(root->left != NULL){
//       t1 = delNodes(root->left, to_delete);
//     }
//     if(root->right != NULL){
//       t2 = delNodes(root->right, to_delete);
//     }
// 
//     if(del[root->val]){
//       rep(i,t1.size()) res.push_back(t1[i]);
//       rep(i,t2.size()) res.push_back(t2[i]);
//     } else {
//       k = t1.size();
//       if(k > 0 && root->left == t1[k-1]) t1.pop_back();
//       else                               root->left = NULL;
// 
//       k = t2.size();
//       if(k > 0 && root->right == t2[k-1]) t2.pop_back();
//       else                                root->right = NULL;
// 
//       rep(i,t1.size()) res.push_back(t1[i]);
//       rep(i,t2.size()) res.push_back(t2[i]);
//       res.push_back(root);
//     }
// 
//     return res;
//   }
// };
// 
// {
//   // main関数を適当に処理する
// }

Current time: 2024年04月27日10時33分42秒
Last modified: 2019年07月07日13時21分48秒 (by laycrs)
Tags: Competitive_Programming_Incomplete LeetCode
トップページに戻る

Logged in as: unknown user (not login)

ログイン: