您当前的位置: 首页 >  面试

庄小焱

暂无认证

  • 2浏览

    0关注

    805博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

牛客网算法——名企面试的笔试(4)

庄小焱 发布时间:2021-03-08 10:51:14 ,浏览量:2

摘要

请实现有重复数字的升序数组的二分查找

package 牛客网名企面试笔试问题2021;

import org.junit.Test;

import java.util.Arrays;

/**
 * @Classname 二分查找
 * @Description TODO
 * @Date 2021/3/8 9:40
 * @Created by xjl
 */
public class 二分查找 {
    @Test
    public void test() {
        int search = search1(new int[]{1, 2, 2, 3, 4}, 2);
        System.out.println(search);
    }
    /**
     * @description TODO  没有重复的查找
      * @param: nums
     * @param: target
     * @date: 2021/3/8 9:52
     * @return: int
     * @author: xjl
    */
    public int search(int[] nums, int target) {
        int i = Arrays.binarySearch(nums, target);
        return i;
    }
    /**
     * @description TODO 有重复的查找
     * @param: nums
     * @param: target
     * @date: 2021/3/8 9:53
     * @return: int
     * @author: xjl
    */
    public int search1(int[] nums, int target) {
        int i = Arrays.binarySearch(nums, target);
        while (i > 0) {
            if (nums[i]!=nums[i-1]){
               break;
            }
            i--;
        }
        return i;
    }
}

二叉树的景象

package 牛客网名企面试笔试问题2021;

/**
 * @Classname 二叉树的景象文件
 * @Description TODO
 * @Date 2021/3/8 9:54
 * @Created by xjl
 */
public class 二叉树的景象文件 {
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;

        public TreeNode(int val) {
            this.val = val;
        }
    }

    public TreeNode Mirror(TreeNode pRoot) {
        if (pRoot == null) return pRoot;
        if (pRoot.left == null && pRoot.right == null){
            return pRoot;
        }
        //处理根节点,交换左右节点
        TreeNode temp=pRoot.left;
        pRoot.left=pRoot.right;
        pRoot.right=temp;
        //处理左子树
        Mirror(pRoot.left);
        //处理右子树
        Mirror(pRoot.right);
        return pRoot;
    }

}

数字的划分

package 牛客网名企面试笔试问题2021;

import org.junit.Test;

/**
 * @Classname 数字的划分
 * @Description TODO
 * @Date 2021/3/8 10:06
 * @Created by xjl
 */
public class 数字的划分 {

    public int divideNumber(int n, int k) {
        int[][] dp = new int[n + 1][k + 1];
        dp[0][0] = 1;
        for (int i = 1; i             
关注
打赏
1657692713
查看更多评论
0.0408s