刷题笔记

来源:互联网 发布:淘宝客服催好评用语 编辑:程序博客网 时间:2024/06/05 10:54

5.24 https://discuss.leetcode.com/topic/3294/accepted-c-o-n-solution
https://leetcode.com/problems/two-sum/#/description
更新
题目:

Given nums = [2, 7, 11, 15], target = 9,Because nums[0] + nums[1] = 2 + 7 = 9,return [0, 1].

咋一看要遍历俩次,其实只要遍历一次。倒过来看,倒着存数字进去,然后供后面的数字来查找。
代码如下:

class Solution {public:vector<int> twoSum(vector<int> &numbers, int target){    vector<int> result;    unordered_map<int,int> u_map;    for(int i = 0;i<numbers.size();i++)    {        int check_num = target - numbers[i];        if(u_map.find(check_num)!=u_map.end())        {            //因为是倒过来查了            result.push_back(u_map[check_num]);            result.push_back(i);            return result;        }        u_map[numbers[i]]=i;    }    return result;}};

525 dfs不熟悉啊
https://leetcode.com/problems/path-sum/#/description

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:bool dfs(TreeNode* root, int sums, int sum){    if (root == NULL) return false;    sums += root->val;    if (root->left == NULL&&root->right == NULL)    {        if (sums == sum)            return true;        else            return false;    }    if (root->left != NULL)         if(dfs(root->left, sums, sum))            return true;    if (root->left != NULL)         if(dfs(root->right, sums, sum))            return true;    //sums -= root->val;    //return false;}bool hasPathSum(TreeNode* root, int sum) {    int sumss = 0;    return dfs(root, sumss, sum);}};
原创粉丝点击