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