zoukankan      html  css  js  c++  java
  • 653. Two Sum IV

    use std::borrow::Borrow;
    use std::cell::RefCell;
    use std::collections::HashMap;
    use std::ops::Index;
    use std::rc::Rc;
    
    /**
    653. Two Sum IV - Input is a BST
    https://leetcode.com/problems/two-sum-iv-input-is-a-bst/
    Given the root of a Binary Search Tree and a target number k,
    return true if there exist two elements in the BST such that their sum is equal to the given target.
    */
    // Definition for a binary tree node.
    #[derive(Debug, PartialEq, Eq)]
    pub struct TreeNode {
        pub val: i32,
        pub left: Option<Rc<RefCell<TreeNode>>>,
        pub right: Option<Rc<RefCell<TreeNode>>>,
    }
    
    //
    impl TreeNode {
        #[inline]
        pub fn new(val: i32) -> Self {
            TreeNode {
                val,
                left: None,
                right: None,
            }
        }
    }
    
    pub struct Solution {}
    
    /*
    solution: inorder + Hashmap, Time:O(n), Space:O(n)
    */
    impl Solution {
        pub fn find_target(root: Option<Rc<RefCell<TreeNode>>>, k: i32) -> bool {
            let mut list: Vec<i32> = Vec::new();
            Self::in_order(root, &mut list);
            let mut map: HashMap<i32, i32> = HashMap::new();
            let mut i: i32 = 0;
            for item in list {
                let needToFind = k - item;
                if (map.contains_key(&needToFind)) {
                    return true;
                }
                map.insert(item, i);
                i = i + 1;
            }
            return false;
        }
    
        fn in_order(root: Option<Rc<RefCell<TreeNode>>>, list: &mut Vec<i32>) {
            match root {
                Some(node) => {
                    Self::in_order(node.as_ref().borrow().left.clone(), list);
                    list.push(node.as_ref().borrow().val);
                    Self::in_order(node.as_ref().borrow().right.clone(), list);
                }
                None => { return; }
            }
        }
    }
  • 相关阅读:
    NXOpen测最最近距离和投影距离
    abp学习日志三(实体&聚合根)
    abp学习日志二(DDD)
    abp学习日记一(安装)
    abp学习日记 初记
    kubernetes学习——minikube入门
    windows10安装Kubernetes和MiniKube
    windows10安装docker desktop(非VMBox)
    Asp.netCore3.0 Docker 阿里云 部署 Demo
    小宝与老财
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/15396851.html
Copyright © 2011-2022 走看看