2017/11/3 Leetcode 日记

654. Maximum Binary Tree

Given an integer array with no duplicates. A maximum tree building on this array is defined as follow:

  1. The root is the maximum number in the array.(根节点是数组中的最大值)
  2. The left subtree is the maximum tree constructed from left part subarray divided by the maximum number.(左子树是左子数组构造出的最大子树)
  3. The right subtree is the maximum tree constructed from right part subarray divided by the maximum number.(右子树是右子数组构造出的最大子树)

Solutions:

 /**
* 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:
TreeNode* constructMaximumBinaryTree(vector<int>& nums) {
return solver(nums, , nums.size() - );
} TreeNode* solver(vector<int>& nums, int left, int right){
if (left > right ) return NULL; int index_max = left;
for(int i = left;i <= right;i++){
if(nums[i] > nums[index_max]) index_max = i;
} TreeNode* root = new TreeNode(nums[index_max]);
root->left = solver(nums, left, index_max - );
root->right = solver(nums, index_max + , right);
return root;
}
};

c++

 # Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None class Solution(object):
def constructMaximumBinaryTree(self, nums):
"""
:type nums: List[int]
:rtype: TreeNode
"""
if not nums:
return None
root, index_max = TreeNode(max(nums)), nums.index(max(nums))
root.left = self.constructMaximumBinaryTree(nums[:index_max])
root.right = self.constructMaximumBinaryTree(nums[index_max+1:])
return root

python

461. Hamming Distance

The Hamming distance between two integers is the number of positions at which the corresponding bits are different.

Given two integers x and y, calculate the Hamming distance.

(两个数,求异或后的数二进制中1的数量)

Note:
  0 ≤ x, y < 231.

Solutions:

class Solution {
public int hammingDistance(int x, int y) {
return Integer.bitCount(x ^ y);
}
}

Java一行

python3一行
class Solution {
public:
int hammingDistance(int x, int y) {
return count(x^y);
}
int count(int num){
int sum = ;
while(num>){
sum += num %;
num = num /;
}
return sum;
}
};

c++

657. Judge Route Circle

Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to the original place.

The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are R (Right), L(Left), U (Up) and D (down). The output should be true or false representing whether the robot makes a circle.

(判断机器人是否走了一个圈,其实就是判断字串R=L, U=D)

Solutions:

class Solution {
public:
bool judgeCircle(string moves) {
int U = , D = , R = , L = ;
for(int i = ; i < moves.size(); i++){
switch(moves[i]){
case 'U':
U++;
break;
case 'D':
D++;
break;
case 'R':
R++;
break;
case 'L':
L++;
break;
}
}
if((U==D) && (R==L)) return true;
return false;
}
};

c++

class Solution:
def judgeCircle(self, moves):
"""
:type moves: str
:rtype: bool
"""
U,D,L,R = , , ,
for move in moves:
if move == 'U':
U = U+
if move == 'D':
D = D+
if move == 'R':
R = R+
if move == 'L':
L = L+
if U == D and R == L:
return True
return False

python3

617. Merge Two Binary Trees

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.

You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

(如题)

Solutions:

/**
* 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:
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if(t1 == NULL && t2 == NULL) return NULL;
if(t1 == NULL && t2 != NULL) return t2;
if(t1 != NULL && t2 == NULL) return t1; TreeNode* root = new TreeNode(t1->val + t2->val);
root->left = mergeTrees(t1->left, t2->left);
root->right = mergeTrees(t1->right, t2->right);
return root;
}
};

c++

class Solution:
def mergeTrees(self, t1, t2):
"""
:type t1: TreeNode
:type t2: TreeNode
:rtype: TreeNode
"""
if not t1 and not t2: return None
root = TreeNode((t1.val if t1 else ) + (t2.val if t2 else ))
root.left = self.mergeTrees(t1 and t1.left, t2 and t2.left)
root.right = self.mergeTrees(t1 and t1.right, t2 and t2.right)
return root how does "and" work?
"""
I am using t1 and t1.left as a shortcut for t1.left if t1 is not None else None. Here, "x and y" evaluates as follows: If x is truthy, then the expression evaluates as y. Otherwise, it evaluates as x. When t1 is None, then None is falsy, and t1 and t1.left evaluates as t1 which is None. When t1 is not None, then t1 is truthy, and t1 and t1.left evaluates as t1.left as desired. This is a standard type of idiom similar to the "?" operator in other languages. I want t1.left if t1 exists, otherwise nothing. Alternatively, I could use a more formal getattr operator: getattr(t1, 'left', None)
"""

python3

627. Swap Salary

Given a table salary, such as the one below, that has m=male and f=female values. Swap all f and m values (i.e., change all f values to m and vice versa) with a single update query and no intermediate temp table.

(更换性别)

Solutions:

update salary set sex = (CASE WHEN sex = 'm'
THEN 'f'
ELSE 'm'
END)

简单版

update salary set sex = CHAR(ASCII('f') ^ ASCII('m') ^ ASCII(sex));

in ascii table, 'f' is 0x66, 'm' is 0x6D, and 0x66 xor 0x6D = 0x0B, which is  in decimal

诡异的XOR

2017/11/3 Leetcode 日记的更多相关文章

  1. 2017/11/22 Leetcode 日记

    2017/11/22 Leetcode 日记 136. Single Number Given an array of integers, every element appears twice ex ...

  2. 2017/11/21 Leetcode 日记

    2017/11/21 Leetcode 日记 496. Next Greater Element I You are given two arrays (without duplicates) num ...

  3. 2017/11/13 Leetcode 日记

    2017/11/13 Leetcode 日记 463. Island Perimeter You are given a map in form of a two-dimensional intege ...

  4. 2017/11/20 Leetcode 日记

    2017/11/14 Leetcode 日记 442. Find All Duplicates in an Array Given an array of integers, 1 ≤ a[i] ≤ n ...

  5. 2017/11/9 Leetcode 日记

    2017/11/9 Leetcode 日记 566. Reshape the Matrix In MATLAB, there is a very useful function called 'res ...

  6. 2017/11/7 Leetcode 日记

    2017/11/7 Leetcode 日记 669. Trim a Binary Search Tree Given a binary search tree and the lowest and h ...

  7. 2017/11/6 Leetcode 日记

    2017/11/6 Leetcode 日记 344. Reverse String Write a function that takes a string as input and returns ...

  8. 2017/11/5 Leetcode 日记

    2017/11/5 Leetcode 日记 476. Number Complement Given a positive integer, output its complement number. ...

  9. jingchi.ai 2017.11.25-26 Onsite面试

    时间:2017.11.25 - 11.26 地点:安徽安庆 来回路费报销,住宿报销. day1: 大哥哥问了我一个实际中他们遇到的问题.有n个点,将点进行分块输出,输出各个块的均值点.具体就是100* ...

随机推荐

  1. Python进行数据分析(一)初步学习 对时区进行计数

    time_zones[:10] Out[19]: [u'America/New_York', u'America/Denver', u'America/New_York', u'America/Sao ...

  2. 【BZOJ】2165: 大楼

    [题意]从第0层开始有无穷层,每层有n个房间,给定矩阵A,A[i][j]表示从第x层的房间 i 可以跳到第x+A[i][j]层的房间 j (x任意),A[i][j]=0表示不能跳.初始在第0层第1个房 ...

  3. 好久没写了,SQLSERVER服务丢失后怎么办

    服务器突然中了病毒,查杀后,结果两个服务也丢了, 从其他机器上COPY了两个EXE过来,编写这两个服务就搞定了,不用重装MSSQL2005了 sc create MSSQLSERVER binpath ...

  4. 远程工具(SSH Secure)连接Centos出现中文乱码问题的解决办法

    问题原因 使用远程工具进行连接时,如果linux有中文文件或目录,显示时会出现乱码,原因是linux编码是UTF-8,而远程工具默认是当前系统本地编码即GBK.所以解决方案是统一两者编码就OK了,但是 ...

  5. PHP深浅拷贝

    举个栗子: <?php class Example1 { public $name; public function __construct($name) { $this->name = ...

  6. windows环境下搭建Redis集群

    转载请注明出处,原文章地址: https://www.cnblogs.com/tommy-huang/p/6240083.html Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Red ...

  7. 64_p8

    python2-cotyledon-tests-1.6.7-2.fc26.noarch.rpm 12-Feb-2017 10:28 23182 python2-couchdb-1.0-6.fc26.n ...

  8. 42.Trapping Rain Water---dp,stack,两指针

    题目链接:https://leetcode.com/problems/trapping-rain-water/description/ 题目大意:与84题做比较,在直方图中计算其蓄水能力.例子如下: ...

  9. Netty框架入门

    一.概述     Netty是由JBOSS提供的一个java开源框架.     Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序.   二. ...

  10. [How to] HBase的bulkload使用方法

    1.简介 将数据插入HBase表中的方法很多,我们可以通过TableOutputFormat以Mapreduce on HBase的方式将数据插入,也可以单纯的使用客户端API将数据插入.但是以上方法 ...