ARTS_202308Week4

58 阅读3分钟

Algorithm

  • 题目
    • 回文数。给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
    • 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
  • 难度,简单
  • 题解
    • 我的,暴力遍历,时间复杂度
class Solution {
	public boolean isPalindrome(int x) {
		if (x < 0) {
			return false;
		}
		List<Integer> xarr = new ArrayList<Integer>();
		int xtemp = x;  
		while(xtemp > 0){  
			xarr.add(xtemp % 10);  
			xtemp = xtemp / 10;  
		}  
  
		int xarrSize = xarr.size();  
		boolean isHui = true;  
		int j = xarrSize - 1;  
		for(int i = 0; i < xarrSize/2; i++){  
			isHui = isHui && (xarr.get(i) == xarr.get(j));  
			j--;  
		}  
		return isHui;
	}
}
  • 反转数字,O(logn)
class Solution {
	public boolean isPalindrome(int x) {
		// 处理临界情况
		// 负数不是回文
		if (x < 0) {
			return false;
		}
		// 结尾是 0 的不是回文
		if (x != 0 && x % 10 == 0) {
			return false;
		}
		
		// 反转数字
		// 反转一半数字,因为完全反转可能整数溢出
		int xtemp = 0;
		// 判断是否到达一半
		while (x > xtemp) {
			xtemp = xtemp * 10 + x % 10;
			x /= 10;
		}
		return x == xtemp || x == xtemp / 10;
	}
}

Review

  • 文章:How to Do Great Work
  • 简介:本文讲述了如何做出伟大的工作,是很实用的工作指南
  • 点评:本文很长,英语能力有限,暂读一小部分。
    • 如何找到要做的工作?有三个特点
      • 对这件事有天赋
      • 对这件事有兴趣
      • 这件事有取得杰出成就的空间
    • 养成自己发起并推动项目的习惯
      • 这是我感触最深的,近期刚亲自发起并完成一个小项目。成就感很强。
    • 四个步骤去的杰出成就:
      • 选择一个领域
      • 学习足够多的知识到达领域前沿
      • 注意到领域的缺口
      • 探索其中有前景的缺口

Technique/Tips

  • 时间复杂度的计算
    • 时间复杂度是方便开发者估算程序的运行时间
    • 程序的运行时间通过估计操作单元的数量,代表程序消耗的时间
    • 大O表示法:是一种特殊的表示法,可以比较操作数,指出的算法的增速。
      • 表示方法:O(n),n是操作数
      • 大O表示法指的是最糟糕情况下的运行时间
    • 常见的大O运行时间:
      • O(log n),对数时间,常见算法:二分查找
      • O(n),线性时间,常见算法:简单查找
      • O(n * log n),常见算法:快速排序
      • O(n ^ 2),选择排序
      • O(n!),尽量避免阶乘

Share

  • All in one or All in boom
  • 最近搞了个小主机玩,没有显卡,低功耗芯片。跟着网上的教程搭建了一些服务,勉强算作HomeLab。最近AIGC甚嚣尘上,等手头宽裕了,定要搞个显卡跑跑大模型。
  • 搭建小主机服务的时候,网上总能看到两种论调,All in one 和 All in boom。一方支持所有服务放在一个主机中,方便管理、降低功耗、节省电量;另一方支持分布式微服务,每个主机只干一个事,各做各的事情,降低耦合、增加健壮性。
  • 各有各的道理,我选择了All in one。因为这个小主机就是我的玩具,boom了也没什么问题。另外我不相信All in boom,boom总是有原因的,总是能解决的。可能是我年轻,没踩过坑。不过我这人就是倔,不相信有自己解决不了的问题。
  • 我的All in one方案是使用 esxi 虚拟化,虚机有openwrt、黑群晖、win11。openwrt只作为旁路由,防止软路由作为主路由时网络爆炸。硬件直通还没做,芯片太新,驱动不好打。
  • 总之,有钱谁玩All in boom,这不没钱嘛。没钱又不想当垃圾佬,活该我未来踩坑。