zoukankan      html  css  js  c++  java
  • 牛客网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;
        }
    }
  • 相关阅读:
    ajax入门之建立XHR对象 (1)
    JavaScript中的函数有什么特点? 应该怎样优化?
    什么是JavaScript中的面向对象? 与其他编程语言的面向对象有什么区别? 什么是原型?
    Web页面加载,如何分析页面性能?如何进行优化?
    一个页面从输入 URL 到页面加载完的过程中都发生了什么事情?
    关于清除浮动与闭合浮动
    如何更加安全快速的使用富文本编辑器
    用Python实现一个爬取XX大学电费通知的小脚本
    在Sublime Text3上面更加方便愉快的写php
    如何搭建一个WAMP环境
  • 原文地址:https://www.cnblogs.com/pzqu/p/9457633.html
Copyright © 2011-2022 走看看