大家好呀,我是飞鱼。
大家都知道,当下的互联网环境,极度内卷。
像什么996,007这些。
其最残酷的是扼杀了程序员其他的可能性,就是要让你只埋头干活,不要去思考选择其他事情。
很多人都说中国的程序员是没有积累的职业,不像医生,律师,教师这些。
所以我们尽早得尝试都积累些自己的生产资料,这样才能走的长远。
总之在目前的大环境下,每个程序员都应该为自己考虑一份被动收入,其重要性不言而喻。
我觉得程序员先多尝试一些低成本的可行的副业,然后找到适合自己的,能长期坚持下去的。
我们尝试做副业的时候,必须要满足几个特征。
1、个人喜欢,这样才能坚持下去。
2、需要能长期做的。
3、能给别人带来价值。
4、试错成本尽量低。
目前大家比较熟悉的副业有:
摆摊,跑滴滴,送外卖,接私活,当培训讲师,教少儿编程,做独立开发等。
我个人觉得当下程序员最好的副业是做自媒体。
做自媒体,打造个人的品牌IP,能让你有更多的机会,认识更多的人。
自媒体类似一个免费的广告平台,发挥个人的技能,打造出一个个人品牌,然后通过自媒体宣传出去。
当通过自媒体获得了足够的流量,到时候变现也比较简单了。
比如可以通过广告变现,还可以卖课,不是都说程序员的终点是卖课么。
有啥其他看法,欢迎在评论区留言讨论。
想看技术文章的,可以去我的个人网站:/
每日一题
题目描述
峰值元素是指其值严格大于左右相邻值的元素。
给你一个整数数组 nums,找到峰值元素并返回其索引。
数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。
你可以假设 nums[-1] = nums[n] = -∞ 。
你必须实现时间复杂度为 O(log n) 的算法来解决此问题。
解题思路
二分查找
查找时,左指针 l,右指针 r,以其保持左右顺序为循环条件。
根据左右指针计算中间位置 m,并比较 m 与 m+1 的值。
代码实现
Java代码:
class Solution {
public int findPeakElement(int[] nums) {
int left = 0, right = nums.length - 1;
for (; left < right; ) {
int mid = left + (right - left) / 2;
if (nums[mid] > nums[mid + 1]) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
}
代码:
class Solution:
def findPeakElement(self, nums: List[int]) -> int:
# 二分查找
nums.append(-float("inf"))
lo, hi = 0, len(nums) - 1
while lo < hi:
mid = (lo + hi) // 2
if nums[mid] < nums[mid + 1]:
lo = mid + 1
else:
hi = mid
return lo
Go代码:
func findPeakElement(nums []int) int {
left, right := 0, len(nums)-1
for left < right {
mid := (left + right) >> 1
if mid == len(nums)-1 || nums[mid] < nums[mid+1] {
left = mid + 1
} else {
right = mid
}
}
return left
}
复杂度分析
时间复杂度:O(logn)
空间复杂度:O(1)。