当前位置: 代码迷 >> 综合 >> 剑指 offer day23
  详细解决方案

剑指 offer day23

热度:63   发布时间:2023-11-24 17:16:48.0

剑指 Offer 39. 数组中出现次数超过一半的数字

题目:

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。

题解:

用map记录次数,遍历map

    public int majorityElement(int[] nums) {
    int res = 0;Map<Integer,Integer> map = new HashMap<>();for (int i:nums){
    if (!map.containsKey(i)){
    map.put(i,1);}else {
    int times = map.get(i);map.remove(i);map.put(i,times+1);}}for (Map.Entry<Integer,Integer> entry : map.entrySet()){
    if (entry.getValue()>nums.length/2){
    res = entry.getKey();break;}}return res;}

剑指 Offer 66. 构建乘积数组

题目:

给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法

题解:

表格分区,清晰图解

1.首先计算下三角,另B[0]=1

  • B[0]=1
  • B[1]=B[0]*A[0]
  • B[2]=B[1]*A[1]
  • B[3]=B[2]*A[2]
  • B[i]=B[i-1]*A[i-1]

2.接下来计算上三角

  • temp=1
  • B[4] = B[4]*temp
  • B[3] = B[3]*A[4] ---->temp = temp *A[4] —>B[3] = B[3] * temp
  • B[2]=B[2]* A[4] *A[3] —>temp = temp *A[3] —>B[2] = B[2] * temp

在这里插入图片描述

public int[] constructArr(int[] a) {
    if (a.length==0){
    return new int[0];}int res[] = new int[a.length];//计算下三角res[0] = 1;for (int i=1;i<a.length;i++){
    res[i] = res[i-1] * a[i-1];}//计算上三角int temp = 1;for (int i=a.length-2;i>=0;i--){
    temp = temp*a[i+1];res[i] = res[i]*temp;}return res;}

剑指 Offer 57 - II. 和为s的连续正数序列

题目:

输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。

序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。

题解:

1.利用等差数列求和找到数组;

2.将数组存储在list集合中,返回结果

    public int[][] findContinuousSequence(int target) {
    List<int[]> list = new ArrayList<>();for (int a1 = 1;a1<target;a1++){
    int n=1;while ((a1*n+n*(n-1)/2)<target){
    n++;}if ((a1*n+n*(n-1)/2)==target){
    int[] a = new int[n];int first = a1;//创建一个数组for (int i=0;i<n;i++){
    a[i] = first;first++;}//将数组存储在list集合中list.add(a);}}int res[][] = new int[list.size()][];for (int i=0;i<list.size();i++){
    res[i] = list.get(i);}return res;}

今天一口气把手机锁屏、壁纸、聊天记录背景全换了!!!我感觉我又可以了!
去四楼借书 ,恰巧经过了大二上一直待的位置,面向东面的露台,在那俺完成了井字棋、数据结构和计组的实验呜呜呜!

  相关解决方案