牛客网2016.4.11(两个数相加为sum/计数一个int型的二进制有多少个1/二叉树是否左右对称)
求最小的两个数相加为sum
//求最小的两个数相加为sum
public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) {
List<Integer> list = new ArrayList<Integer>();
if(array == null || array.length==0){
return (ArrayList<Integer>) list;
}
for(int i=0;i<array.length-1;i++){
for(int j=i+1;j<array.length;j++){
if(array[i]+array[j] == sum){
list.add(array[i]);
list.add(array[j]);
break;
}
}
if(list.size()!=0){
break;
}
}
//没找到就返回空集合
return (ArrayList<Integer>) list;
}
计数一个int型的二进制有多少个1,难点在负数需要补码存
public int MoreThan0(int n) {
int cnt = 0;
char []c = Integer.toBinaryString(n).toCharArray();
for (char d : c) {
if(d=='1'){
cnt++;
}
}
return cnt;
}
求一个二叉树是否左右对称
- 中心处理方法
- 思路,利用栈队列的特性,进行层比较
import java.util.LinkedList;
import java.util.Stack;
public class Solution {
boolean isSymmetrical(TreeNode pRoot) {
Stack<TreeNode> stack = new Stack<TreeNode>();
Stack<TreeNode> StackSon = new Stack<TreeNode>();
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
stack.push(pRoot);
queue.offer(pRoot);
TreeNode bt1 = null;
TreeNode bt2 = null;
while(stack.size()!=0 || queue.size()!=0){
while(stack.size()!=0){
//出队和出栈
bt1 = stack.pop();
bt2 = queue.poll();
//比较镜像元素
if(bt1==null || bt2==null){
break;
}
if(bt1.val != bt2.val){
return false;
}
//入队
queue.offer(bt1.right);
queue.offer(bt1.left);
//栈的中转队列
StackSon.push(bt2.right);
StackSon.push(bt2.left);
}
while(StackSon.size()!=0){
stack.push(StackSon.pop());
}
}
return true;
}
public static void main(String[] args) {
int a[] = {8,6,6,5,7,7,5};
TreeNode root= new CreatTree().CreatTreeWay(a);
System.out.println(new Solution().isSymmetrical(root));
}
}
- 按层创建二叉树
import java.util.LinkedList;
public class CreatTree {
TreeNode root = null;
public TreeNode CreatTreeWay(int a[]){
if(a==null || a.length==0 ){
return null;
}
if(root == null){
root = new TreeNode(a[0]);
}else{
return root;
}
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
list.offer(root);
TreeNode node = null;
for (int i = 1; i < a.length && list.size()!=0; i++) {
node = list.poll();
node.left = new TreeNode(a[i]);
list.offer(node.left);
if(i+1<a.length){
node.right = new TreeNode(a[i+1]);
list.offer(node.right);
}
}
return root;
}
public static void main(String[] args) {
int a[] = {8,6,6,5,7,7,5};
new CreatTree().CreatTreeWay(a);
}
}
- 忘了提供二叉树的结点类了
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
牛客网2016.4.11(两个数相加为sum/计数一个int型的二进制有多少个1/二叉树是否左右对称)的更多相关文章
- 牛客网编程练习(华为机试在线训练)-----求int型正整数在内存中存储时1的个数
题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数. 输入描述: 输入一个整数(int类型) 输出描述: 这个数转换成2进制后,输出1的个数 示例1 输入 5 输出 2 P ...
- 牛客网 Wannafly挑战赛11 B.白兔的式子-组合数阶乘逆元快速幂
链接:https://www.nowcoder.com/acm/contest/73/B来源:牛客网 B.白兔的式子 时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 262144K, ...
- 牛客网 Wannafly挑战赛11 A.白兔的分身术
水一水博客. 链接:https://www.nowcoder.com/acm/contest/73/A来源:牛客网 A.白兔的分身术 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C ...
- 最接近的数 牛客网 程序员面试金典 C++ Python
最接近的数 牛客网 程序员面试金典 C++ Python 题目描述 有一个正整数,请找出其二进制表示中1的个数相同.且大小最接近的那两个数.(一个略大,一个略小) 给定正整数int x,请返回一个ve ...
- 无缓存交换 牛客网 程序员面试金典 C++ Python
无缓存交换 牛客网 程序员面试金典 C++ Python 题目描述 请编写一个函数,函数内不使用任何临时变量,直接交换两个数的值. 给定一个int数组AB,其第零个元素和第一个元素为待交换的值,请返回 ...
- 整数转化 牛客网 程序员面试金典 C++ Python
整数转化 牛客网 程序员面试金典 C++ Python 题目描述 编写一个函数,确定需要改变几个位,才能将整数A转变成整数B. 给定两个整数int A,int B.请返回需要改变的数位个数. 测试样例 ...
- 有向路径检查 牛客网 程序员面试金典 C++ Python
有向路径检查 牛客网 程序员面试金典 C++ Python 题目描述 对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径. 给定图中的两个结点的指针DirectedGraphNode* a, ...
- 平衡二叉树检查 牛客网 程序员面试金典 C++ Python
平衡二叉树检查 牛客网 程序员面试金典 C++ Python 题目描述 实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1. 给定指向树根结点的指针T ...
- 【牛客网】Whalyzh's Problem
[牛客网]Whalyzh's Problem 每个\(b_{i,j}\)建一个点,认为选了\(b_{i,j}\)一定会选\(a_{i}\)和\(a_{j}\) 选了\(a_{i}\)的话会带了一个\( ...
随机推荐
- Hive调优策略
Hive调优策略 Fetch抓取 Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算. 例如:select * from employee:在这种情况下,Hive可以简单 ...
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
- python课堂整理10---局部变量与全局变量
一.局部变量与全局变量 1. 没有缩进,顶头写的变量为全局变量 2. 在子程序里定义的变量为局部变量 3. 只有函数能把变量私有化 name = 'lhf' #全局变量 def change_name ...
- nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现
nginx文件名逻辑漏洞_CVE-2013-4547漏洞复现 一.漏洞描述 这个漏洞其实和代码执行没有太大的关系,主要原因是错误地解析了请求的URL,错误地获取到用户请求的文件名,导致出现权限绕过.代 ...
- Vue模板语法与常用指令
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数,结合相应系统,在应用状态改变时 ...
- PointCloud及其经典论文介绍
这篇博客会介绍点云的基本知识,重点介绍最近两年发表的部分经典论文,有什么建议欢迎留言! 点云基本介绍 点云是某个坐标系下的点的数据集,包含了丰富的信息,可以是三维坐标X,Y,Z.颜色.强度值.时间等等 ...
- python requests、xpath爬虫增加博客访问量
这是一个分析IP代理网站,通过代理网站提供的ip去访问CSDN博客,达到以不同ip访同一博客的目的,以娱乐为主,大家可以去玩一下. 首先,准备工作,设置User-Agent: #1.headers h ...
- [填坑] ubuntu检测不到外接显示器
笔记本是win10+ubuntu18双系统,今天ubuntu(开启nivida独显状态)突然无法连外接屏幕,但切换win10就可以显示. 贴吧找到的简单解决方法,不需要重装驱动,记录分享在这里: su ...
- poj 2524 Ubiquitous Religions(简单并查集)
对与知道并查集的人来说这题太水了,裸的并查集,如果你要给别人讲述并查集可以使用这个题当做例题,代码中我使用了路径压缩,还是有一定优化作用的. #include <stdio.h> #inc ...
- k8s学习02-----kubeadm部署k8s
机器规划 系统配置 三台机器都执行 1.关闭selinux及firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux ...