LeetCode Day7

博客介绍了两道Java算法题。一是给定正整数N,判断重新排序数字能否得到2的幂,思路是将N转字符数组排序,与1到10*N中2的幂次排序后对比;二是二叉树后序遍历,可递归或用栈实现非递归遍历,并给出了执行用时和内存消耗情况。

869. 重新排序得到 2 的幂
难度:中等
给定正整数 N ,我们按任何顺序(包括原始顺序)将数字重新排序,注意其前导数字不能为零。
如果我们可以通过上述方式得到 2 的幂,返回 true;否则,返回 false。
示例 1:

输入:1
输出:true

示例 2:

输入:10
输出:false

示例 3:

输入:16
输出:true

示例 4:

输入:24
输出:false

示例 5:

输入:46
输出:true

提示:
1 <= N <= 10^9
解:
执行用时 : 7 ms, 在Reordered Power of 2的Java提交中击败了64.56% 的用户
内存消耗 : 33.6 MB, 在Reordered Power of 2的Java提交中击败了68.57% 的用户
思路:将N转为char数组后排序,找出1到10*N中所有2的幂次的数,排序后对比即可
Code:

class Solution {
    public boolean reorderedPowerOf2(int N) {
        char arr[]=(N+"").toCharArray();
        Arrays.sort(arr);
        for(long i=1;i<(long)10*N;){
            char arr1[]=(i+"").toCharArray();
            Arrays.sort(arr1);
            if(Arrays.equals(arr,arr1))
                return true;
            i*=2;
        }
    return false;
    }
}

145. 二叉树的后序遍历
难度:困难
给定一个二叉树,返回它的 后序 遍历。

示例:

输入: [1,null,2,3]  
   1
    \
     2
    /
   3 

输出: [3,2,1]

进阶: 递归算法很简单,你可以通过迭代算法完成吗?
解:
执行用时 : 1 ms, 在Binary Tree Postorder Traversal的Java提交中击败了97.20% 的用户
内存消耗 : 33.9 MB, 在Binary Tree Postorder Traversal的Java提交中击败了78.07% 的用户
思路:递归,非递归则使用栈做根右左的
Code:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public List<Integer> list=new ArrayList<>();
    public List<Integer> postorderTraversal(TreeNode root) {
        recursion(root);
        return list;
    }
    void recursion(TreeNode node){
        if(node==null)
            return;
        if(node.left!=null)
        recursion(node.left);
        
        if(node.right!=null)
        recursion(node.right);
        
        list.add(node.val);
        return;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值