[剑指offer] 其他算法[上]篇
发布时间 2023-09-25 14:41:38作者: Vivid-BinGo
JZ66 构建乘积数组
/* 暴力 */
public class JZ66_1
{
public static int[] multiply(int[] A)
{
int[] res = new int[A.length];
Arrays.fill(res, 1);
for (int i = 0; i < A.length; i++)
{
for (int j = 0; j < A.length; j++)
{
if (j == i) continue;
res[i] *= A[j];
}
}
return res;
}
}
/* 根据 i 分成两部分 */
public class JZ66_2
{
public static int[] multiply(int[] A)
{
int[] res = new int[A.length];
int temp = 1;
res[0] = 1;
for (int i = 1; i < A.length; i++)
res[i] = res[i - 1] * A[i - 1];
for (int i = A.length - 1; i >= 0; i--)
{
res[i] *= temp;
temp *= A[i];
}
return res;
}
}
JZ50 第一个只出现一次的字符
JZ5 替换空格
JZ21 调整数组顺序使奇数位于偶数前面(一)
JZ39 数组中出现次数超过一半的数字
JZ43 整数中1出现的次数(从1到n整数中1出现的次数)
JZ45 把数组排成最小的数
JZ49 丑数⭐
JZ74 和为S的连续正数序列
JZ57 和为S的两个数字