Seven's blog

你不会找到路,除非你敢于迷路

0%

ARTS-No.5

Algorithm

26. 删除排序数组中的重复项

解法一:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length <= 1) {
return nums.length;
}

int scanIndex;
int insertIndex = 1;
int compareIndex = 0;
int length = 1;

for (scanIndex = 1; scanIndex < nums.length; scanIndex++) {
if (nums[scanIndex] != nums[compareIndex]) {
nums[insertIndex] = nums[scanIndex];
insertIndex++;
length++;
compareIndex = scanIndex;
}
}

return length;
}
}

执行用时: 1ms, 内存消耗: 41.5MB.

解法二:

考虑到其实最后 length 和 insertIndex 的值是一样的, 那就…..删掉 length 呗.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length <= 1) {
return nums.length;
}

int scanIndex;
int insertIndex = 1;
int compareIndex = 0;

for (scanIndex = 1; scanIndex < nums.length; scanIndex++) {
if (nums[scanIndex] != nums[compareIndex]) {
nums[insertIndex] = nums[scanIndex];
insertIndex++;
compareIndex = scanIndex;
}
}

return insertIndex;
}
}

执行用时: 1ms, 内存消耗: 38.2MB.

解法三:

再想想 compareIndex, 其实也没啥必要. 毕竟是有序数组, 判断元素是否一样的话只需要比较当前元素和前一个元素就好了.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length <= 1) {
return nums.length;
}

int insertIndex = 1;

for (int scanIndex = 1; scanIndex < nums.length; scanIndex++) {
if (nums[scanIndex] != nums[scanIndex - 1]) {
nums[insertIndex] = nums[scanIndex];
insertIndex++;
}
}

return insertIndex;
}
}

执行用时: 1ms, 内存消耗: 38.2MB.

Review

What is REST — A Simple Explanation for Beginners, Part 1: Introduction

REST 是为 API 设计的一种风格规范, 于 2000 年由 Roy Fielding 在他的博士论文中提出.

和 REST 有关的两个术语:

  • 客户端: API 的用户, 可以是一个人, 一款软件或者浏览器等;
  • 资源: 资源是 API 可以提供信息的任何对象, 每一个资源都有一个独立的标识.

当 RESTful API 被调用时, 服务器提供客户端请求资源的状态.

当你想调用 RESTful API 的时候, 需要提供给服务器两样东西:

  • 你所感兴趣的资源标识, 通常是资源的 URL;
  • 你想让服务器对上述资源进行的操作, 经常使用的操作有 GET, POST, PUT 和 DELETE.

Tip

修复 wine 微信黑色色块问题

发现了一个 Linux 下 wine 微信黑色色块的修复方法.

Share

房东在 200 米外的楼下开了家便利店, 最近看到她经常发朋友圈说快递代收的事情. 大概就是非租户不代收, 租户的快递请当天领走等等.

我的房东是二手房东, 整个城中村不同的位置都有她的租户, 租户比较分散, 便利店也并不紧挨哪一栋出租楼.

这件事情引发了我的一个思考: 开了便利店的房东, 有必要为租户提供免费的快递代领服务吗?

首先从她的主业房屋租赁来看. 在客户决定要租赁一间房之前, 快递代领这项服务对客户最终决策的影响似乎微乎其微. 也就是说, 我是不是要租你这间房, 并不会因为快递租赁这项服务而改变. 在客户租赁一间房之后, 至少合同期内, 快递带领这项服务似乎也并不会影响客户终止或者继续租赁关系. 所以但从这方面来讲, 快递代领似乎并不会给房东带来任何利益.

其次是代领的角度. 代领这项服务本身是免费的, 但是代领的东西是有价值的. 如果发生了快递丢失的事情, 快递公司是不会买单的, 因为快递公司确实把快递送到了 “客户” 手中; 我想房东也是不会买单的, 毕竟她提供的服务是免费的, 我都没收你钱, 凭什么让我赔钱呢? 租户花了钱, 但是没拿到东西, 铁定也是不乐意呀. 这可能会引发矛盾, 反而不利于促进房东和租户之间的关系, 属于出力不讨好的行为. 想要不发生快递丢失的事情, 一是靠全民自觉, 二是靠严格监管. 害人之心不可有, 但是防人之心不可无, 所以指望别人自觉是不可靠的. 严格监管呢? 那就必须花费更多的精力去做这件本就没有利益的事情, 只能夸赞房东道德高尚了.

再从便利店的角度看. 十多平的便利店, 快递少的话还好, 如果多了, 会不会影响便利店客户的购物体验呢? 会不会进而影响便利店的生意?

当然不是所有事情都可以用利益衡量, 也或许不是房东的我体会不到房东的用意. 我想这些事情, 也纯属狗拿耗子, 多管闲事了.

你会怎么想呢?

微信公众号
扫码关注, 一起进步!