java经典算法-day14
哈喽,各位小伙伴们好,我是喵手。
一、前言
正值金三银四好时节,又到了刷题月。xdm,有空的欢迎一起呀。无论你是挤公交还是坐地铁时间,随时随地皆可刷...你可以不用实操,你只需要看题思考,完后有空coding就好呀。接下来我要开启我的刷题之旅啦,喜欢的小伙伴欢迎点赞关注哦。
二、题目描述:
题目1:
求一个3*3矩阵主对角线元素之和。
题目2:
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
三、思路分析:
题1分析:
这题其实也很简单。为什么这么说呢,主要是想求两对角线之和,你就可以利用双重for循环进行求解即可。
题2分析:
首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
四、算法实现:
题1AC代码:
public class Test {
public static void main(String[] args) {
double sum = 0;
int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 7, 8 } };
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++) {
if (i == j)
sum = sum + array[i][j];
}
System.out.println(sum);
}
}
题2AC代码:
import java.util.Random;public class Test {
public static void main(String[] args) {
int temp = 0;
int arr[] = new int[12];
Random r = new Random();
for (int i = 0; i <= 10; i++)
arr[i] = r.nextInt(1000);
for (int i = 0; i <= 10; i++)
System.out.print(arr[i] + "\t");
for (int i = 0; i <= 9; i++)
for (int k = i + 1; k <= 10; k++)
if (arr[i] > arr[k]) {
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
System.out.println();
for (int k = 0; k <= 10; k++)
System.out.print(arr[k] + "\t");
arr[11] = r.nextInt(1000);
for (int k = 0; k <= 10; k++)
if (arr[k] > arr[11]) {
temp = arr[11];
for (int j = 11; j >= k + 1; j--)
arr[j] = arr[j - 1];
arr[k] = temp;
}
System.out.println();
for (int k = 0; k <= 11; k++)
System.out.print(arr[k] + "\t");
}
}
具体控制台打印如下:
//未排序
101 694 236 947 429 411 676 564 715 378 828
//已排序
101 236 378 411 429 564 676 694 715 828 947
//插入800这个数字
101 236 378 411 429 564 676 694 715 800 828 947
五、总结:
综上,这两道题,第一道题考察你的for遍历使用程度掌握的如何,对二维数组进行遍历求对角线,其实就找对角线的规律即可。第二道就是插入一个数,你可以先排序,然后再遍历进行找位置,其满足小于等于后一个数,大于等于前一个数即可。
如果你有更好的解题思路或者想法,欢迎评论区留言告诉我哦,喵手感激不尽。
六、文末:
好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。
wished for you successed !!!
---------------------------------------------------------------------
⭐️若喜欢我,就请关注我叭。
⭐️若对您有用,就请点赞叭。
⭐️若有疑问,就请评论留言告诉我叭。
---------------------------------------------------------------------
- 点赞
- 收藏
- 关注作者
评论(0)