大家好,我是苍何。
之前发了神仙公司名单(深圳篇、重庆篇、成都篇、北京篇、武汉篇、长沙篇、广州篇),感受到了大家浓浓的热情,也一度让我明白了一句至理名言:越是稀有,越是弥足珍贵。
上一篇神仙公司名单(广州)留言区呼声最高的是杭州,刚好苍何在杭州有待过一段时间,也有不少前同事在杭州,那今天趁着周末我们就来看一看杭州都有哪些神仙公司吧。
神仙公司民间说法是指的那些不加班,工资高,福利好的公司,于个人可能就是钱多、事少、离家近。神仙公司在民间我们通常指能做到 WLB(工作生活平衡,不加班) 的公司。
老规矩,放名单前,先来看看杭州这座城市。
说到杭州,脑子里最先蹦出来的是阿里和西湖。想起阿里是因为曾经和她有过伟大的革命爱情,可惜我们没产生出什么结晶。想起西湖,完全是小时候被「千年等一会」给洗脑了。
说起杭州,算是一座「面子」与「里子」兼顾的宝地,。外面看光鲜亮丽,内里却有它自己的智慧和脾气。
先说「面子」,西湖的水,龙井的茶,断桥的雪,那是文人墨客的心头爱,是几千年诗意的延续。站在西湖边,你好像瞬间成了古代的侠客,想要一壶酒、一片湖光。
但现在的杭州可不止是诗情画意,「互联网之都」里有着最不像北上广的北上广。故而生活节奏、房价都是堪比一线的。
按理说,从我老家的位置来看,我是最该去杭州好好出人头地的,看了下高铁也才两个多小时,亲朋好友也相对多。
但人与城市的缘分就像人和人之间的缘分一样,我和杭州有缘无分,哈哈哈。
好啦,下面我们进入神仙公司名单。
图片看不清?文字再来一遍:
1、Zoom
Zoom 在杭州的办公室实行 965 工作制,提供弹性工作时间,每周可居家办公一天。福利包括六险一金、补充商业保险、18 天年假、20 天病假、员工持股计划、零食下午茶、月度餐补和节日福利,薪资范围约为 25 k 至 60 k,14 薪。
2、微策略(MicroStrategy)
965 工作制,不加班,每周可居家办公一天。福利包括六险一金、补充医疗保险、20 天年假、10 天病假、提供水果零食、游戏室、健身房、母婴室和节日福利,薪资范围约为 18 k 至 40 k,13 薪起。
3、游卡桌游
实行双休和弹性工作制,提供六险一金、补充子女医疗保险、餐补、零食下午茶和体检,薪资范围约为 20 k 至 50 k。
4、道富(State Street)
955 工作制,提供六险一金、补充医疗保险、15 天年假、20 天病假、体检和节日福利,薪资范围约为 20 k 至 50 k,13 薪起。
5、鸿程系统
鸿程系统的工作时间为8:30至17:30,午休 2 小时,提供六险一金、免费食堂、应届生房补,薪资范围约为 15 k 至 30 k,13 薪。
6、影视飓风
工作时间为10:00至19:00,双休,提供五险一金、员工旅游、团建、零食下午茶,每年提供新款 iPhone Pro,薪资范围约为 10 k 至 25 k。
7、微脉
微脉专注于互联网医疗健康服务,微脉提供五险一金、绩效奖金、节日福利、带薪年假、员工旅游、专业培训、年终奖金、餐饮补贴、通讯补贴、全勤奖、弹性工作、周末双休、定期体检、交通补贴等福利。工作时间为上午 9 点至下午 6 点,实行双休和弹性工作制。在招的岗位有 Java、前端等,能开到 13-14 薪
8、中控信息
上吧时间上午 9 点至下午 5 点半,双休,公司还提供旅游、节日礼品、生日礼盒等福利,养老企业,Java 工程师能开到 11-22 k,14 薪。
保命申明:
1、不加班并非绝对意义上一点都不加,项目忙有急事也可能会加。
2、这个名单苍何没有都入职过(否则我就成海王啦),信息大部分来源于职友和群友反馈,有不对的地方,欢迎评论区留言指出,我会更新到知识库中。另外也欢迎参与到神仙公司知识库共建。
好啦,关于广州的神仙公司,你有什么补充的呢?你还想看哪个城市的神仙公司呢?欢迎评论区讨论。
另外想要获取各地神仙公司名单,只需要后台回复:神仙公司,这份名单苍何会一直维护。
...
回归主题。
今天来一道开发考过的面试算法题,给枯燥的牛马生活加加油😂。
题目描述
平台:LeetCode
题号:153
题目描述:寻找旋转排序数组中的最小值
已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次旋转后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7]
在经过一些旋转后可能得到:
若旋转 4 次,可以得到
[4,5,6,7,0,1,2]
若旋转 7 次,可以得到
[0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], ..., a[n-1]]
旋转一次的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]]
。
给你一个元素值 互不相同 的数组 nums
,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素。
你必须设计一个时间复杂度为 O(log n)
的算法解决此问题。
示例 1
输入: nums = [3,4,5,1,2]
输出: 1
解释: 原数组为 [1,2,3,4,5]
,旋转 3 次得到输入数组。
示例 2
输入: nums = [4,5,6,7,0,1,2]
输出: 0
解释: 原数组为 [0,1,2,4,5,6,7]
,旋转 4 次得到输入数组。
示例 3
输入: nums = [11,13,15,17]
输出: 11
解释: 原数组为 [11,13,15,17]
,旋转 4 次得到输入数组。
提示
n == nums.length
1 <= n <= 5000
-5000 <= nums[i] <= 5000
nums
中的所有整数 互不相同nums
原来是一个升序排列的数组,并进行了1
至n
次旋转
解题思路
由于数组经过旋转后仍然保持部分有序,因此我们可以使用 二分查找 来降低时间复杂度至 O(log n)
。具体思路如下:
初始化
left
和right
指针,分别指向数组的开头和结尾。进入二分查找的循环:
计算中间位置
mid
。如果
nums[mid]
大于nums[right]
,说明最小值在mid
的右侧,因此将left
更新为mid + 1
。否则,最小值在
mid
的左侧或就是mid
,因此将right
更新为mid
。
循环结束时,left
指向的元素即为数组的最小值。
代码实现
Java 代码
class Solution {
public int findMin(int[] nums) {
int left = 0;
int right = nums.length - 1;
while (left < right) {
int mid = left + (right - left) / 2;
// 如果中间值大于右侧值,说明最小值在右侧
if (nums[mid] > nums[right]) {
left = mid + 1;
} else {
// 否则最小值在左侧或就是 mid
right = mid;
}
}
// 返回最小值
return nums[left];
}
}
C++代码
class Solution {
public:
int findMin(vector<int>& nums) {
int left = 0;
int right = nums.size() - 1;
while (left < right) {
int mid = left + (right - left) / 2;
// 如果中间值大于右侧值,说明最小值在右侧
if (nums[mid] > nums[right]) {
left = mid + 1;
} else {
// 否则最小值在左侧或就是 mid
right = mid;
}
}
// 返回最小值
return nums[left];
}
};
Python 代码
class Solution:
def findMin(self, nums):
left, right = 0, len(nums) - 1
while left < right:
mid = left + (right - left) // 2
# 如果中间值大于右侧值,说明最小值在右侧
if nums[mid] > nums[right]:
left = mid + 1
else:
# 否则最小值在左侧或就是 mid
right = mid
# 返回最小值
return nums[left]
复杂度分析
时间复杂度:
O(log n)
,因为使用了二分查找。空间复杂度:
O(1)
,只使用了常数级别的额外空间。
ending
你好呀,我是苍何。是一个每天都在给自家仙人掌讲哲学的执着青年,我活在世上,无非想要明白些道理,遇见些有趣的事。倘能如我所愿,我的一生就算成功。共勉 💪
点击关注下方账号,你将感受到一个朋克的灵魂,且每篇文章都有惊喜。
感谢大家一直以来的阅读、在看和转发,我会把流量主收益都用来发红包,大家可在公众号页面发送相关暗号关键词获取抽奖,每一篇文章会给到一个不同的暗号,对应的抽奖都是独立的,此篇暗号为【杭州】,在后台回复【杭州】,即可点击进去参与抽奖!抽奖内容、金额、个数等都无变化,在开奖前参与抽奖,操作均有效。
注意,后台(不是评论区,是后台)回复【杭州】即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
后台回复(不是评论区,是后台)即可参与抽奖。
就像大家之前回复【八股】一样。
往期推荐