摘要
请实现有重复数字的升序数组的二分查找
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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?