left函数

LeetCode 226 Invert Binary Tree

三世轮回 提交于 2020-03-28 14:10:51
Problem: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Analysis: 1、helper function + recursion 一开始我用调用子函数,在子函数中递归的方式实现: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 private: 12 void swapNode (TreeNode* root) { 13 TreeNode *tmp = root->left; 14 root->left = root->right; 15 root->right = tmp; 16 17 if (root->left != NULL) { 18 swapNode (root->left); 19 } 20 21 if (root->right != NULL) { 22 swapNode

【机器学习】ex1-线性回归

北慕城南 提交于 2020-03-24 01:00:19
这是吴恩达机器学习课程的课后习题解答 课程视频地址: https://www.bilibili.com/video/BV164411b7dx/ 笔记以及课后习题: https://github.com/fengdu78/Coursera-ML-AndrewNg-Notes 对于笔者的课后习题解答,会从零基础的角度将习题中的Python模块以及使用到的函数逐一分析。 可以联系博主取得Jupyter Notebook版本,更利于操作哦! import numpy as np import pandas as pd import matplotlib.pyplot as plt 1.数据导入 导入txt文件数据 path = "ex1data1.txt" data = pd.read_csv(path,header=None, names=['renkou','shouyi'] ) # 读取、头部、属性名称 data.tail(5) # 打印head,tail data.describe() # 打印总计、均值、标准差、min、25%、50%、75%、max kind类型 line : line plot (default)#折线图 bar : vertical bar plot#条形图 barh : horizontal bar plot#横向条形图 hist : histogram

LeetCode All in One 题目讲解汇总(持续更新中...)

混江龙づ霸主 提交于 2020-03-21 06:32:49
Given a non-empty string s , you may delete at most one character. Judge whether you can make it a palindrome. Example 1: Input: "aba" Output: True Example 2: Input: "abca" Output: True Explanation: You could delete the character 'c'. Note: The string will only contain lowercase characters a-z. The maximum length of the string is 50000. 这道题是之前那道 Valid Palindrome 的拓展,还是让我们验证回复字符串,但是区别是这道题的字符串中只含有小写字母,而且这道题允许删除一个字符,那么当遇到不匹配的时候,我们到底是删除左边的字符,还是右边的字符呢,我们的做法是两种情况都要算一遍,只要有一种能返回true,那么结果就返回true。我们可以写一个子函数来判断字符串中的某一个范围内的子字符串是否为回文串,参见代码如下: 解法一: class Solution { public: bool validPalindrome(string s) {

树的子结构

痴心易碎 提交于 2020-03-19 13:31:49
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 知识铺垫:   先来看下子树和子结构的概念     子树:只要包含了一个节点,就得包含这个节点下的所有节点     子结构:包含了一个节点,可以只取左子树或右子树,或者不取,强调结构上的一致   (可参考:https://blog.csdn.net/wushuomin/article/details/79943737)  思路:   一颗大树A,一颗小树B,首先判断A的根节点是否与B的根节点相同,不相同,就依次去A根节点的左子树、右子树上查找,如果存在(假设A中与B的根节点相等的节点为D),此时需要判断的就是D的左子树、右子树是否与B的根节点的左子树、右子树相同节点结构,终止条件:如果B先访问到头了,即小树B先达到NULL,说明B就是A的子结构,如果大树A达到NULL,说明就不是A的子结构。   采用递归的方式 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class

LeetCode:最接近的三数之和

旧城冷巷雨未停 提交于 2020-03-17 10:03:06
刷题神器:LeetCode官方网站 一、题目还原 给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。 例如,给定数组 nums = [-1,2,1,-4], 和 target = 1. 与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2). 二、解题思路 ①三数之和的思路和上一题一样 Solution 2 双指针 ① EdgeCase:数组长度小于3或者等于三但是相加不等于0的,返回空 ② 将数组进行排序 ③ 定义左右两个下标,记为left = 0和right = nums.length - 1 ④ 以第一个数num为基准,left和right分别从第二个数和最后一个数开始计算,如果num+nums[left]+nums[right] == 0则left ++; right --;注意,如果left的下一个与之前数字相同继续left++,right同理 ⑤ 注意每次循环的基准数如果和上一次相同直接跳过进行下一次循环 ② 定义一个diff表示三数之和与target的差,如果差越小,就取当前的和 三、代码展示 ① main函数 public static void main ( String [ ] args ) { int

leetcode 671. Second Minimum Node In a Binary Tree

a 夏天 提交于 2020-03-09 14:00:42
方法一:用一个set存储遍历二叉树的值,很常规的方法。 方法二:用递归。一开始屡不清关系,总感觉这个函数的返回值是第二小的值呀,怪怪的,这可怎么返回,我再过程中调用的时候是需要它返回子树中最小的呀。其实设定递归的条件就可以,如果当前子节点的值与父节点的值相等那么就递归下去,返回的虽然是子树的第二小的值,但也是对应的想要的子树的最小值。 class Solution { public int findSecondMinimumValue ( TreeNode root ) { if ( root == null ) return - 1 ; if ( root . left == null && root . right == null ) return - 1 ; int left = root . left . val ; int right = root . right . val ; if ( root . val == left ) { left = findSecondMinimumValue ( root . left ) ; } if ( root . val == right ) { right = findSecondMinimumValue ( root . right ) ; } if ( left == - 1 && right == - 1 ) {

二分法

吃可爱长大的小学妹 提交于 2020-03-06 21:48:14
Date:2019-07-25 16:03:14 算法实现 1 /*---------------------------有序数组中查找给定数字x-------------------------*/ 2 #include <stdio.h> 3 4 //left=0, right=n-1 5 int binarySearch(int A[], int left, int right, int x) 6 { 7 int mid; //mid为left和right的中点 8 while(left <= right) 9 { 10 // 11 // 若right超过int型上界的一半,则left+right可能溢出 12 // mid = left + (right - left)/2; 替代 13 // 14 mid = (left+right) / 2; 15 16 if(A[mid] == x) 17 { 18 return mid; 19 } 20 else if(A[mid] > x) //中间数大于x,则往左区间查找 21 { 22 right = mid - 1; 23 } 24 else //中间数小于x,则往右区间查找 25 { 26 left = mid + 1; 27 } 28 } 29 30 return -1; //查找失败,返回-1 31 } 32 33

PHP数字金额转换大写金额

↘锁芯ラ 提交于 2020-03-05 01:54:30
早些年做CRM用到的一个金额转换函数,今天从旧项目中拿出来记录一下。金额转换的函数方法有很多,都很不错。不过这个是小崔刚工作的时候写的一个转换函数,多少还是有点纪念意义。如有问题请朋友们指出,小崔及时修正。谢谢啦! 废话不多说直接上代码: 1 <?php 2 3 /** 4 * 数字金额转换大写数字 5 * $num 数字类型 6 */ 7 8 function inttodaxie($num) { 9 //判断$num是否数字 10 if(!is_numeric($num)) return -1; 11 $dint = array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); 12 $len = strlen($num); 13 $dstr = ''; 14 for($i = 0; $i <= $len; $i++) { 15 $key_ = substr($num, $i, 1); 16 $dstr .= $dint[$key_]; 17 } 18 return $dstr; 19 } 20 21 $result = inttodaxie(90011234); 22 var_dump($result); 23 echo '<br>'; 以上是基础转换代码,在这个基础上进行二次改造: 1 <?php 2 3 /** 4 *

杜教筛——省选前的学习1

空扰寡人 提交于 2020-03-01 08:34:04
BZOJ 3944 ——Sum 题目要求给定一个数$N$,$N \leq 2^{32} - 1$,求 $$ans1 = \sum_{i = 1}^N \phi (i), ans2 = \sum_{i = 1}^N \mu (i) $$ ——蛤?这个怎么做?我只知道线性筛。。。 先介绍$O(N)$的算法——线性筛。 由于Euler函数和Mobius函数都是积性函数(即对于$(a, b) = 1$, $f(ab) = f(a)f(b)$),可以利用类似贾志鹏线性筛的方法$O(n)$筛出1到$N$所有数的函数值。 1 #include<cstdio> 2 #include<cstring> 3 typedef long long LL; 4 const int N = 1000050; 5 LL phi[N], mobius[N]; 6 int pr[300000]; 7 void calc(int n) { //计算[1, n]的phi值及mobius值 8 memset(phi, -1, sizeof phi); 9 memset(mobius, -1, sizeof mobius); 10 int prnum = 0, i, j; 11 phi[1] = mobius[1] = 1; 12 for (i = 2; i < n; ++i) { 13 if (phi[i] < 0) {

泊寓平台第四次打卡task06

左心房为你撑大大i 提交于 2020-02-25 20:26:07
批量归一化(BatchNormalization) 对输入的标准化(浅层模型) 处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。 标准化处理输入数据使各个特征的分布相近 批量归一化(深度模型) 利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。 1.对全连接层做批量归一化 位置:全连接层中的仿射变换和激活函数之间。 全连接: x = W u + b o u t p u t = ϕ ( x ) \boldsymbol{x} = \boldsymbol{W\boldsymbol{u} + \boldsymbol{b}} \\ output =\phi(\boldsymbol{x}) x = W u + b o u t p u t = ϕ ( x ) 批量归一化: o u t p u t = ϕ ( BN ( x ) ) output=\phi(\text{BN}(\boldsymbol{x})) o u t p u t = ϕ ( BN ( x ) ) y ( i ) = BN ( x ( i ) ) \boldsymbol{y}^{(i)} = \text{BN}(\boldsymbol{x}^{(i)}) y ( i ) = BN ( x ( i ) ) μ B ← 1 m ∑ i = 1 m x ( i ) ,