Fork me on GitHub

剑指offer JZ1

JZ1

原题链接

题目

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

核心

数组遍历与优化,元素有序易想到二分法,观察法不易想到

思路 M行N列

暴力枚举 1分

一个个查,不好,浪费了两个方向有序的条件

$T: O(mn)$

$S: O(1)$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public:
bool Find(int target, vector <vector<int>> array) {
//空数组
if (array.size() == 0 || array[0].size() == 0) return false;
//遍历
for (int i = 0; i < array.size(); i++) {
for (int j = 0; j < array[0].size(); j++) {
if (target == array[i][j]) return true;
}
}
return false;
}
};

行二分 2分

一行行查,每行的数使用二分法

$T: O(mlogn)$

$S:O(1)$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Solution {
public:
bool Find(int target, vector <vector<int>> array) {
//空数组
if (array.size() == 0 || array[0].size() == 0) return false;
//行遍历
for (int i = 0; i < array.size(); i++) {
int left = 0, right = array[0].size() - 1;
//每行的数二分
while (left <= right) {
int mid = (left + right) / 2;
if (target == array[i][mid]) return true;
else if (target > array[i][mid]) {
left = mid + 1;
} else if (target < array[i][mid]) {
right = mid - 1;
}
}
}
return false;
}
};

观察法(副对角线顶点法)5分

妙啊!

右上角(左下角)的节点一定是该行最大,该列最小的,比较后按照大小关系移动即可

$T:O(n)$, $n=max(M,N)$

$S:O(1)$

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
bool Find(int target, vector <vector<int>> array) {
//空数组
if (array.size() == 0 || array[0].size() == 0) return 0;
int x = 0, y = array[0].size() - 1, val;
//元素在数组范围内移动
while (x >= 0 && x < array.size() && y >= 0 && y < array[0].size()) {
val = array[x][y];
if (target == val) return true;
//大于,下移
else if (target > val) x++;
//小于,左移
else if (target < val) y--;
}
return false;
}
};

肉类与香料

肉类与香料

在肉类的处理中,无论是烹炒还是烧菜,香料的合理运用可以去膻增香,事半功倍

加料

本质上香料属于中草药,药食同源,因此量不宜过大,否则喧宾夺主

味重少放,味清适量多放一点

香料3种,可以稍多一点,不宜超过8种

猪肉

猪肉喜大料桂皮,捏两粒花椒,几粒小茴香,一片香叶

羊肉

羊肉喜花椒,可以多放花椒,不喜大料桂皮,可以适量加香叶、小茴香、孜然

牛肉

牛肉喜大料,不喜花椒桂皮,一般用素菜炖,突出本身鲜香

Ps技巧

Ps技巧

快捷键

V 移动工具

快速复制图层

Ctrl + J 或者 Alt + 拖动

调整图层大小

Ctrl + T

智能对象

说白了就是图层 Class 化

资源扔到 class 里做工厂处理

oop 就是 nb,对象化之后的处理也是基于对象了

栅格化

说白了就是按像素划分图形,将一个向量图层位图化

参照 bootstrap 的 Grid system(栅格系统)

  • Copyrights © 2020-2023 Jack Kong
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信