写点什么

ARTS 0819 打卡

  • 2023-08-25
    上海
  • 本文字数:1532 字

    阅读完需:约 5 分钟

一、(A)算法:

题目: 1 比特与 2 比特字符

有两种特殊字符:

  • 第一种字符可以用一比特 0 表示

  • 第二种字符可以用两比特(10 或 11)表示

给你一个以 0 结尾的二进制数组 bits ,如果最后一个字符必须是一个一比特字符,则返回 true 。

在这里给出两种解法,第一种是自己想出来的解法,第二种是力扣官方解法,

解法一:

思路:遍历一遍数据,按照两种字符的规则去解码字符,并保存解码的字符结果,遍历完成后,判断解码结果,如果结果为字符 1,返回 true,否则返回 false;

Java 代码

import java.lang.reflect.Array;import java.util.ArrayList;import java.util.List;
class Solution { public boolean isOneBitCharacter(int[] bits) { List<Integer> code = new ArrayList<Integer>();
for (int i = 0; i < bits.length; i++) { if (code.size() == 0) { code.add(bits[i]); } else { if (code.get(0) == 0 || code.size() == 2) { code.clear(); } code.add(bits[i]); } }
return code.size() == 1; }}
复制代码

​这种解法思路比较简单直观,通过解码来找出最后一个字符,然后判断结果。缺点是由于需要保存每次解码的结果创建了列表数据结构,并且中间有许多对于列表的插入和删除操作,会导致空间开销大,性能差,执行速度慢。


解法二:

思路:正序遍历数组,如果 bit[i] 值为 0,则说明找到一个字符一,正常遍历下一个值,若 bit[i] 值为 1 ,说明找到一个字符二,由于字符二是由两个数字组成(10 或 11),那意味着 i+1 位需要跳过,这时需要从 i+2 位开始遍历。由于题中所给的数组最后一位为 0,那么如果遍历到最后位字符 (n-1),则说明这个数组是以字符一结尾的。


class Solution {    public boolean isOneBitCharacter(int[] bits) {        int n = bits.length, i = 0;        while (i < n - 1) {            i += bits[i] + 1;        }        return i == n - 1;    }}
复制代码

二、(R)文章

在合适的时机选择继承还是组合

When to prefer inheritance to composition • Buttondown

​​

 三、(T)技术

GitHub - ChrisCavs/aimless.js: The missing JavaScript randomness library.

一个生成各种随机值的 JS 库。

四、(S)观点

前段时间读了刘润的《底层逻辑》,其中对第一节文章印象比较深刻。作者通过一个例子探讨了三种不同的对错观念。


假设 C 负责一个未完工的工地,楼顶有一扇门,门后直接是楼外墙,人走过会掉下去摔死。现在 A 欺骗 B 穿过这个门,B 摔死了,请问是谁的责任?


第一反应说是 A 的责任,因为是 A 欺骗 B 导致 B 摔死,这是妥妥的谋杀行为,那么这种对错观念就是法学家的对错观,证据确凿,行为明确。但是这种对错观念只能做到事后责任界定,不能够起到预防作用。


对于上面的案例,经济学家有不同的看法,是 C 的错。

为什么呢?经济学家是这样想的,整个社会避免 A 被 B 欺骗导致摔死所须付出的成本,远远高于 C 在门上加一个锁的成本。虽然惩罚会让 C 觉得很冤,但是以后所有工地负责人都会把门锁上了,提前预防了此类事件的发生。所以,经济学家总会从“社会总成本”的角度来思考,虽然看上去不太合理,但产生的效果会比纯粹的“判决”来的更加有效。


那么,商人可能会这样想:不管是 A 的错还是 C 的错,B 都死了,不管是谁承担责任,B 都无法起死回生,从个体的利益最大化角度来讲,B 只能怪自己。


上述三种对错观该如何选择?如果你需要评论一件事,可以选择法学家的立场;如果需要制定政策或计划,可以选择经济学家的立场;如果你是那个即将摔死的人,还是建议选择商人立场,因为“我的损失最大”。

用户头像

还未添加个人签名 2019-09-04 加入

还未添加个人简介

评论

发布
暂无评论
ARTS 0819 打卡_ARTS 打卡计划_冰封的鸢尾花_InfoQ写作社区