A:Rotate Image Medium
You are given an n x n 2D matrix representing an image.
Rotate the image by 90 degrees (clockwise).
Note:
You have to rotate the image , which means you have to modify the input 2D matrix directly. DO NOTallocate another 2D matrix and do the rotation.
解析:给定一个n*n的二阶数组,将数组进行90度翻转,只能通过当前数组进行翻转,不能赋值给其他数组进行翻转
思路:一个n*n的二阶数组,可以看做是多个正方形,一层嵌套着一层,旋转90需要把每一层的正方形都翻转90度,一个正方形上的点要进行翻转,需要同时将四点进行位置的互换,在数组中的位置分别是
第i层 第j点是对应matrix[i][j],第i行的第j列为第一个数,第二个数matrix[j][n-1-i],第j行第n-1-i列,为第一个数翻转90度之后的位置,第三个数matrix[n-1-i][n-1-j],第n-1-i行的n-1-j列,为第二个数翻转90度的位置,第四个数matrix[n-1-j][i],第n-1-j行的第i列,对应第三个数翻转90的位置,第一个数为第四个数翻转90度的位,通过这个四个数的位置变化可以将一个正方形上的所有点都旋转90度。
方案:
R&T:,关于数组的一些使用:
如数组的打印:Arrays.toString(数组);
数组转换成ArrayList:new ArrayList<String>(Arrays.asList(字符串数组));
数组的合并:ArrayUtils.addAll(intArray, intArray2);
将数组的元素以指定的字符串连接成一个字符串:StringUtils.join(new String[] { "a", "b", "c" }, ", ");//org.apache.commons.lang.StringUtils
ArrayList转换成数组:ArrayList.toArray(stringArr);
将数组倒转:ArrayUtils.reverse(intArray);
获取删除数组中指定位置的元素之后的数组:
int[] removed = ArrayUtils.removeElement(intArray, 3);//create a new array 不改变原有数组
S:https://www.cnblogs.com/behindman/p/8873191.html?from=timeline,使用漫画的风格来介绍区块链,生动形象,
1、去中心化
这是区块链颠覆性特点,不存在任何中心机构和中心服务器,所有交易都发生在每个人电脑或手机上安装的客户端应用程序中。
实现点对点直接交互,既节约资源,使交易自主化、简易化,又排除被中心化代理控制的风险。
2、开放性
区块链可以理解为一种公共记账的技术方案,系统是完全开放透明的,账簿对所有人公开,实现数据共享,任何人都可以查账。
3、不可撤销、不可篡改和加密安全性
区块链采取单向哈希算法,每个新产生的区块严格按照时间线形顺序推进,时间的不可逆性、不可撤销导致任何试图入侵篡改区块链内数据信息的行为易被追溯,导致被其他节点的排斥,造假成本极高,从而可以限制相关不法行为。