2017/11/21 Leetcode 日记
2017/11/21 Leetcode 日记
496. Next Greater Element I
You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of nums2. Find all the next greater numbers for nums1's elements in the corresponding places of nums2.
The Next Greater Number of a number x in nums1 is the first greater number to its right in nums2. If it does not exist, output -1 for this number.
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) {
vector<int> tNums;
for(int i = , sz = findNums.size(); i < sz; i++){
bool finded = false;
int index = ;
for(int j = findN(findNums[i], nums), nsz = nums.size(); j < nsz; j++){
if(nums[j] > findNums[i]){
index = j;
break;
}
}
if(index == ) tNums.push_back(-);
else tNums.push_back(nums[index]);
}
return tNums;
}
// return index of nums[k] == num
int findN(int num, vector<int>& nums){
for(int i = , sz = nums.size(); i < sz; i++){
if(nums[i] == num){
return i;
}
}
return -;
}
};
c++
513. Find Bottom Left Tree Value
Given a binary tree, find the leftmost value in the last row of the tree.
(BFS)
/**
* 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:
int findBottomLeftValue(TreeNode* root) {
queue<TreeNode*> leaves;
leaves.push(root);
while(!leaves.empty()){
TreeNode *temp = leaves.front();leaves.pop();
if(!temp->right && !temp->left && leaves.empty()) return temp->val;
if(temp->right)
leaves.push(temp->right);
if(temp->left)
leaves.push(temp->left);
}
}
};
c++
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None class Solution:
def findBottomLeftValue(self, root):
"""
:type root: TreeNode
:rtype: int
"""
list = []
list.append(root)
while(len(list)):
temp = list.pop()
if(temp.right == None and temp.left == None and len(list) == ):
return temp.val
if(temp.right):
list.append(temp.right)
if(temp.left):
list.append(temp.left)
python3
540. Single Element in a Sorted Array
Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.
(二分搜索)
class Solution {
public:
int singleNonDuplicate(vector<int>& nums) {
int left = , right = nums.size()-;
int mid = (left + right) / ;
if(mid == left) return nums[mid];
while(left < right){
if(mid % == ){
if(Left(mid, nums)) {
right = mid-;
mid = (right + left)/;
}
else if(Right(mid, nums)){
left = mid+;
mid = (left + right)/;
}
else return nums[mid];
}else{
if(Left(mid, nums)){
left = mid+;
mid = (left + right)/;
}else{
right = mid-;
mid = (right + left)/;
}
}
}
return nums[mid];
}
bool Left(int i, vector<int>& nums){
int left = ;
if(i == ) return false;
else if (nums[i] != nums[i-]) return false;
else return true;
}
bool Right(int i, vector<int>& nums){
int right = nums.size()-;
if (i == right) return false;
else if (nums[i] != nums[i+]) return false;
else return true;
}
};
c++
647. Palindromic Substrings
Given a string, your task is to count how many palindromic substrings in this string.
The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.
class Solution {
public:
int countSubstrings(string s) {
int left = , right = s.size();
// cout<<right<<endl;
// return traceBack(s, left, right);
int count = ;
for(int i = left; i < right; i++){
for(int j = i; j < right; j++){
bool palindromic = true;
for(int ind = i, end = j; ind <= end; ind++, end--){
if(s[ind] != s[end]) palindromic = false;
}
if(palindromic) count++;
}
}
return count;
}
};
c++
637. Average of Levels in Binary Tree
Given a non-empty binary tree, return the average value of the nodes on each level in the form of an array.
/**
* 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:
vector<double> averageOfLevels(TreeNode* root) {
queue<TreeNode*> q;
queue<long long> level;
vector<double> ave; q.push(root);
level.push();
long long last = , sum = , num = ;
while(!q.empty()){
TreeNode * temp = q.front();q.pop();
long long tp = level.front(); level.pop(); if(temp->right) {q.push(temp->right);level.push(tp+);}
if(temp->left) {q.push(temp->left);level.push(tp+);} if(tp == last){
sum += temp->val;
num ++;
}else{
ave.push_back((double)sum/(double)num);
sum = ;
num = ;
last = tp;
sum += temp->val;
}
if(q.empty()) ave.push_back((double)sum/(double)num);
}
return ave;
}
};
c++
515. Find Largest Value in Each Tree Row
You need to find the largest value in each row of a binary tree.
/**
* 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:
vector<int> largestValues(TreeNode* root) {
queue<TreeNode*> q;
queue<int> level;
vector<int> ave; if(root == NULL) return ave; q.push(root);
level.push();
int last = , max = -(<<);
while(!q.empty()){
TreeNode * temp = q.front();q.pop();
int tp = level.front(); level.pop(); if(temp->right) {q.push(temp->right);level.push(tp+);}
if(temp->left) {q.push(temp->left);level.push(tp+);} if(tp == last){
if(max < temp->val)
max = temp->val;
}else{
ave.push_back(max);
max = -(<<);
last = tp;
if(max < temp->val)
max = temp->val;
}
if(q.empty()) ave.push_back(max);
}
return ave;
}
};
c++
2017/11/21 Leetcode 日记的更多相关文章
- 2017/11/22 Leetcode 日记
2017/11/22 Leetcode 日记 136. Single Number Given an array of integers, every element appears twice ex ...
- 2017/11/13 Leetcode 日记
2017/11/13 Leetcode 日记 463. Island Perimeter You are given a map in form of a two-dimensional intege ...
- 2017/11/20 Leetcode 日记
2017/11/14 Leetcode 日记 442. Find All Duplicates in an Array Given an array of integers, 1 ≤ a[i] ≤ n ...
- 2017/11/9 Leetcode 日记
2017/11/9 Leetcode 日记 566. Reshape the Matrix In MATLAB, there is a very useful function called 'res ...
- 2017/11/7 Leetcode 日记
2017/11/7 Leetcode 日记 669. Trim a Binary Search Tree Given a binary search tree and the lowest and h ...
- 2017/11/6 Leetcode 日记
2017/11/6 Leetcode 日记 344. Reverse String Write a function that takes a string as input and returns ...
- 2017/11/5 Leetcode 日记
2017/11/5 Leetcode 日记 476. Number Complement Given a positive integer, output its complement number. ...
- 2017/11/3 Leetcode 日记
2017/11/3 Leetcode 日记 654. Maximum Binary Tree Given an integer array with no duplicates. A maximum ...
- 2017.11.21 查询某个字段为null的记录
注意,不使用 = null, 而是 is null. select fd_username, fd_tenantid, fd_validity from t_user WHERE fd_validit ...
随机推荐
- 【CodeForces】870 F. Paths
[题目]F. Paths [题意]给定数字n,图上有编号为1~n的点,两点当且仅当gcd(u,v)≠1时有连边,定义d(u,v)为两点间最短距离(若不连通则为0),求Σd(u,v),1<=u&l ...
- C - K-inversions URAL - 1523 (dp + 线段树)
题目链接:https://cn.vjudge.net/contest/275079#problem/C 具体思路:我们可以分层的去建立,假设我们要找k层,我们可以先把满足1.2....k-1层的满足情 ...
- virsh 命令最新整理。 每个“;”之后是正解
1,migrate --domain --destURL --dname --live(热迁移) migrate lf 192.168.16.3 dname 2,managedsave domain ...
- Laravel 中自定义日志目录
参考:https://laravel-china.org/articles/7125/custom-log-directory-in-laravel
- [ python ] 练习作业 - 3
1. 写出Python查找一个变量的顺序 提示:4中作用域的顺序 本地作用域(local) --> 当前作用域被嵌入的本地作用域(enclsing locals) --> 全局/模块作用域 ...
- word2vec参数
架构:skip-gram(慢.对罕见字有利)vs CBOW(快) · 训练算法:分层softmax(对罕见字有利)vs 负采样(对常见词和低纬向量有利) 负例采样准确率提高,速度会慢, ...
- 防范XSS跨站
所有jsp页面输出全部使用<c:out value="{}"/> 默认就是escapeXml="true" java中间件,<c:out /& ...
- 根据名字杀死进程Killall
Killall命令可以用来给一个特定的进程发送一个信号.这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号.现在让我们通过一些实际的例子来看看这个命令的实际用法. ...
- /proc文件夹介绍
Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...
- Fiddler Web Session 列表(1)
Web Session 列表 位置: Web Session 列表 位于Fiddler界面的左侧 ,是Fiddler所抓取到的所有Session会话的列表集合. Web Session 列表 栏名词解 ...