三阶魔方还原笔记
常见三阶魔方颜色说明
以白色为底面,颜色的口诀是红绿橙蓝中层棱块的还原公式
【向右】上顺 右顺 上逆 右逆 上逆 前逆 上顺 前顺
【向左】上逆 左逆 上顺 左顺 上顺 前顺 上逆 前逆顶层十字的公式是什么
FRUR逆U逆F逆小鱼一的特点是什么
- 恰好三个角块不为黄
- 小鱼鱼头放在左上角
- 三个角块的黄色都朝右
小鱼一的公式是什么
右逆 上逆 右顺 上逆 右逆 上二 右顺小鱼二的公式是什么
左顺 上顺 左逆 上顺 左顺 上二 左逆顶层四角块公式是什么
(成对的顶层角块放在左侧)
右顺 上二 右逆 上逆 右顺 上二
左逆 上顺 右逆 上逆 左顺顶层棱块还原公式
(已经还原的顶层棱块放在后侧)
前二、上顺、左顺、右逆
前二、右顺、左逆、上顺
前二
读《长安的荔枝》
- 为什么李善德想放弃这个任务而去逃命
- 杜甫是怎么安慰李善德的
- 到了岭南之后,李善德是怎么找到钱的
- 李善德是怎么找到最会种荔枝的人的
- 李善德是怎么记录荔枝运输情况与荔枝味道变化情况的
- 为什么岭南的官想要杀害李善德
- 李善德是怎么认识杨国忠的
- 为什么完成了任务,李善德没有获得奖赏反而被发配到岭南
- 被发配到了岭南,反而避免了长安失守的影响,是福是祸
前端知识体系
前端知识体系
- MDN上的web入门教程
- Angular入门教程 react vue
- Google提供的Angular入门教程
- TypeScript
- npm
- nginx
- visual studio code
- chrome V8
- 阮一峰的ES6教程
- UI库:Ant Design of Angular, Material-UI
javascript基础语法
- 语法和数据类型
- 流程控制与错误处理
- 循环与迭代
- 函数
- 表达式与运算符
- 数字与日期
- 字符串
- 正则表达式
- 数组
- Map
- 对象
- Class
- Promise
- debugger表达式
- 在线编辑js的网站
- javascript词法文法
Angular中使用到的Observable和RxJS
TypeScript
UI
visual studio code
leetcode733图像渲染刷题笔记
图像渲染
有一幅以 m x n 的二维整数数组表示的图画 image ,其中 image[i][j] 表示该图画的像素值大小。
你也被给予三个整数 sr , sc 和 newColor 。你应该从像素 image[sr][sc] 开始对图像进行 上色填充 。
为了完成 上色工作 ,从初始像素开始,记录初始坐标的 上下左右四个方向上 像素值与初始坐标相同的相连像素点,接着再记录这四个方向上符合条件的像素点与他们对应 四个方向上 像素值与初始坐标相同的相连像素点,……,重复该过程。将所有有记录的像素点的颜色值改为 newColor 。
最后返回 经过上色渲染后的图像 。
题目分析
列出自己想到的线索
- 维护一个存储要检查的点的集合,toBeChecked
根据题解进行分析
- 题解里看到这道题的最佳解法是使用DFS(深度优先搜索)
- 搜索了一下DFS,DFS里可以通过自己调用自己的方法,也就是递归来实现
递归
- 递归的特点就是自己调用自己
- 递归由两部分组成:(1)递归操作 (2)递归终止条件
一个最简单的递归
- 计算从1,2,3公差为1的等差数列前n项和的程序
1
2
3
4
5
6
7
8
9
10
11
12
13/**
* 递归操作,进行一次加法操作
* 递归终止条件,当前的数字等于1
*/
public int sum(int n) {
int sum = 0;
if (n == 1) {
sum += 1;
} else {
sum = sum(n - 1) + n;
}
return sum;
}
递归增加
- 计算从1,7,13公差为6的等差数列前n项和的程序
1
2
3
4
5
6
7
8
9public int sum6(int n){
int sum = 0;
if(n == 1){
sum += n;
}else{
sum = sum6(n - 6) + n;
}
return sum;
}
使用递归来解决这道题
1 | /** |
二叉树的前序遍历、中序遍历、后续遍历
- dfs深度优先搜索最基础的应用应该就是用在二叉树的前中后序遍历上
- 如下为通过递归实现二叉树前序遍历的代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
private List<Integer> list = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
if(root != null){
list.add(root.val);
}
if (root != null && root.left != null) {
preorderTraversal(root.left);
}
if (root != null && root.right != null) {
preorderTraversal(root.right);
}
return list;
}
}
八皇后问题
- 题目
1
2
3
4
5class Solution {
public List<List<String>> solveNQueens(int n) {
}
}
题意
- 入参n代表棋盘行的个数,列的个数,要摆放的皇后的个数
- 输出字符串集合,点表示不放置棋子,Q表示放置皇后
解题思路
- 定义属性,二维数组board[n][n], 解法编号count
- 定义行为,isValid(), printBoard
你的笑容就是天上的太阳
- 你的笑容就是天上的太阳,温暖我和妈妈的内心
- 寒寒,妈妈爱你,晚安
spring framework中进行AOP编程
通过注解实现面向切片编程的核心步骤
- 定义注解
- 实现解析注解的代码
- 使用注解
定义注解
声明的方式
- 对于JavaType.java文件,我们常用的是用来声明类(class)或接口(interface)或者
1
2public class JavaType{
}这里我们使用@interface来定义一个annnotation注解1
2public interface JavaType{
}1
2public JavaType{
}
在@interface上使用注解
@Target注解
- 用来声明注解的使用目标,常见@Target的值有:ElementType.Method用于方法,ElementType.Type用于类型(包括java类、接口、注解), ElementType.Parameter用于方法参数,还有更多枚举可以从ElementType中找到具体定义
1
2
public interface JavaType{}
@Retention注解
- 使用有道词典翻译是保持力的名词意思,此注解的@Target声明的是ANNOTATION_TYPE,用于为注解类型提供声明
- @Retention配置的值从RetentionPolicy.java枚举中选择,可选值为SOURCE,CLASS,RUNTIME
- SOURCE定义的注解保留在源代码中,不编译到Class中去,如@Override和@SuppressWarnings注解使用本策略
- CLASS定义的注解会保留到class文件,但是运行期间不会识别此注解
- RUNTIME定义的注解会被保留到class文件中,同时运行期间也会被识别,AOP中使用的注解一般情况下使用本策略
@Documented
- 用于javadoc的一个注解,声明注解时使用了本注解时,在到处javadoc时,在javadoc中就能看到目标的注解声明
在一个注解中定义方法
- 定义一:基本使用,使用default关键字
1
2
3
4
5
6
7
8import java.lang.annotation.*;
public JavaType {
String value() default "";
} - 使用一
1
2
3
4public class Test{
public void typeA(){}
} - 关键字default指定默认值,默认值必须是与元素的数据类型兼容的类型
- 定义二: 使用枚举
1
2
3
4
5
6
7
8import java.lang.annotation.*;
public JavaType {
RetentionPolicy value() default RetentionPolicy.RUNTIME;
} - 使用二
1
2
3
4
5
6
7import java.lang.annotation.RetentionPolicy;
public class Test {
public void typeA() {
}
} - 定义三:使用数组
1
2
3
4
5
6
7
8import java.lang.annotation.*;
public Target {
ElementType[] value();
} - 使用三
1 | import java.lang.annotation.ElementType; |