拼多多笔试题:大数据乘法
来源:互联网 发布:淘宝客cms选哪个好 编辑:程序博客网 时间:2024/04/28 23:52
吭哧吭哧写了好一会儿,还是没写出来
import java.util.Arrays;
import java.util.Scanner;/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()) {
/**
* 12*19=228
* 1 2
* 1
* 9
* 1 2
* 9 18
* 1 2
* 9 18
* 1 11 18
进行进位 2 2 8
*/
String str1=sc.next();
String str2=sc.next();
if(str1.length()>str2.length()) {
String temp=str1;
str1=str2;
str2=temp;
}
int[][] matrix=new int[str1.length()][str2.length()];
for(int i=0;i<str1.length();i++) {
int cur=str1.charAt(i)-'0';
for(int j=0;j<str2.length();j++) {
int temp=str2.charAt(j)-'0';
matrix[i][j]=cur*temp;
}
}
int[][] arr=new int[str2.length()][str1.length()+str2.length()-1];
//进行加法
for(int i=0;i<arr.length;i++){
int n1=i<str2.length()?i:str2.length();
Arrays.
arr[i]=Arrays.copyOfRange(matrix[i], n1, matrix[i].length);
}
int[] result=new int[arr.length];
for(int i=0;i<arr.length;i++) {
int sum=0;
for(int j=0;j<str2.length();j++) {
sum+=arr[i][j];
}
}
// arr[0]=matrix[0][0];
// arr[arr.length-1]=matrix[str1.length()-1][str2.length()-1];
//
// // arr[0]=matrix[0][0];
// // arr[1]=matrix[0][1]+matrix[1][1-1];
// //arr[2]=matrix[0][2]+matrix[1][2-1]+matrix[2][2-2];
//
// //arr[k]=matrix[0][k]+matrix[1][k-1]+matrix[2][k-2]...
//
// //arr[n-1]=matrix[n1-2][n2-1]+matrix[n1-1][n2-2];
// //arr[n]=matrix[n1-1][n2-1];
// //一共要加两次
// for(int i=0;i<str1.length();i++) {
// int sum=0;
// for(int j=i;j>=0;j--) {
// sum+=matrix[i-j][j];
// }
// arr[i]=sum;
// }
// // 1 2 3
// // 1 2
// // 1 2 3
// // 2 4 6
// for(int i=str1.length();i<str2.length();i++) {
// int sum=0;
// for(int j=0;i<matrix.length;i++) {
// sum+=matrix[str.]
// }
// }
// 1 11 18
int jin=0;
for(int i=result.length;i>=0;i--) {
int sum=result[i]+jin;
if(sum>10) {
jin=sum/10;
result[i]=sum%10;
}
}
if(jin>0) {
System.out.print(jin);
}
System.out.println(result);
}
}
}
看了别人的代码后的大数据乘法,很是简洁。为什么我没想出来?没有找到乘法的规律
import java.util.Arrays;
import java.util.Scanner;
/**
* Definition for singly-linked list. public class ListNode { int val; ListNode
* next; ListNode(int x) { val = x; next = null; } }
*/
public class huawei {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String str1=sc.next();
String str2=sc.next();
char[] str1Arr=str1.toCharArray();
char[] str2Arr=str2.toCharArray();
int[] newArr=new int[str1.length()+str2.length()-1];
for(int i=0;i<str1Arr.length;i++){
for(int j=0;j<str2Arr.length;j++){
newArr[i+j]+=(str1Arr[i]-'0')*(str2Arr[j]-'0');
}
}
for(int j=newArr.length-1;j>0;j--){
newArr[j-1]+=newArr[j]/10;
newArr[j]=newArr[j]%10;
}
outPut(newArr);
}
sc.close();
}
public static void outPut(int[] arr){
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]);
}
System.out.println();
}
}
- 拼多多笔试题:大数据乘法
- 拼多多笔试题
- 拼多多笔试题
- 【笔试题】拼多多笔试
- 拼多多前端笔试题
- 拼多多笔试题总结
- 拼多多前端笔试题(一)
- 拼多多前端笔试题(二)
- 【笔试题】拼多多2018校招内推编程
- 【拼多多笔试题】小熊战斗力
- 拼多多笔试
- 拼多多笔试总结
- 拼多多笔试
- 拼多多笔试题第一题,大数相乘
- 拼多多算法工程师笔试题之分配巧克力
- 拼多多2017校招前端笔试题
- 【笔试题】拼多多1小熊吃糖果
- 2018拼多多内推笔试记录
- java静态代码块 构造代码块 构造方法的执行顺序及注意问题
- 二叉树
- Python日常学习记录
- 装饰器
- JS日期,其他对象
- 拼多多笔试题:大数据乘法
- 【HDU-1863】 畅通工程
- JSON详解
- Skiing POJ
- B
- sdut1252进制转换
- JavaScript进阶:this和prototype
- Hibernate配置文件详解
- springMVC整合jackson