职场与发展
文章平均质量分 87
介绍面试和职场发展相关的知识。
@ZhangJun
Android开发领域拥有十余年经验的资深开发者,专注于Android系统层和应用层的开发,并在电视(TV/STB)和物联网(IoT)领域积累了丰富的行业经验。
展开
-
leetcode刷题:买卖股票的最佳时机
动态规划(Dynamic Programming,简称 DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。动态规划方法的基本思想是:将待求解的问题分解成若干个相互重叠的子问题,求解一个子问题时,将其解存储起来,以便以后利用。这样,在求解任何一个子问题时,所利用的子问题的解都是已经计算过的,从而避免了重复计算。解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。原创 2024-05-12 20:33:42 · 727 阅读 · 1 评论 -
leetcode刷题:搜索插入位置
二分查找的思路不难理解,但是边界条件容易出错,比如循环结束条件中 left 和 right 的关系,更新 left 和 right 位置时要不要加 1 减 1。这里是为了让读者更加深入理解二分查找算法的原理,在实际项目使用中,Java二分搜索算法已经有现成的API库。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。)的时间复杂度,但是如果二分的话则可以降低到 O(之间的大小进行判断,相等则直接返回下标,原创 2024-05-12 19:25:04 · 877 阅读 · 0 评论 -
leetcode刷题:腐烂的橘子
在 BFS 中,每遍历到一个橘子(污染了一个橘子),就将新鲜橘子的数量减一。然后进行 BFS 遍历,每个结点的相邻结点可能是上、下、左、右四个方向的结点,注意判断结点位于网格边界的特殊情况。解释:左下角的橘子(第 2 行, 第 0 列)永远不会腐烂,因为腐烂只会发生在 4 个方向上。输入:grid = [[2,1,1],[1,1,0],[0,1,1]]输入:grid = [[2,1,1],[0,1,1],[1,0,1]]一开始,我们找出所有腐烂的橘子,将它们放入队列,作为第 0 层的结点。原创 2024-05-11 20:38:16 · 311 阅读 · 0 评论 -
leetcode刷题:对称二叉树
广度优先遍历(Breadth-First Search, BFS)是一种从图的某一节点(源节点)出发,先访问该节点的所有相邻节点,然后对每个相邻节点再访问它们的相邻节点,如此层层推进,直到访问完所有节点为止的遍历方法。深度优先遍历(Depth-First Search, DFS)则是一种从图的某一节点(源节点)出发,尽可能深地访问图中的节点,当达到图的某个叶节点时,再返回上一级节点继续搜索,直到访问完所有节点为止的遍历方法......原创 2024-05-10 21:49:30 · 636 阅读 · 0 评论 -
leetcode刷题:反转链表
考虑使用递归法遍历链表,当越过尾节点后终止递归,在回溯时修改各节点的 next 引用指向。考虑遍历链表,并在访问各节点时修改 next 引用指向,算法流程见注释。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。):变量 pre 和 cur 使用常数大小额外空间。输入:head = [1,2,3,4,5]): 遍历链表使用线性大小时间。输入:head = [1,2]):遍历链表使用线性大小时间。): 遍历链表的递归深度达到。输出:[5,4,3,2,1]输入:head = []原创 2024-05-08 19:34:08 · 758 阅读 · 0 评论 -
leetcode刷题:三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]原创 2024-05-07 21:17:29 · 813 阅读 · 1 评论 -
leetcode刷题:移动零
即遍历的时候每遇到一个 非0 元素就将其往数组左边挪,第一次遍历完后,j 指针的下标就指向了最后一个 非0 元素下标。这里参考了快速排序的思想,快速排序首先要确定一个待分割的元素做中间点 x,然后把所有小于等于 x 的元素放到 x 的左边,大于 x 的元素放到其右边。这里我们可以用 0 当做这个中间点,把不等于 0(注意题目没说不能有负数)的放到中间点的左边,等于 0 的放到其右边。其实就是把零的位数先全部去掉数据前移,最后面按照零的个数设置零数,可以进一步优化:避免数组开头是非零元素的交换。原创 2024-05-06 19:07:51 · 295 阅读 · 0 评论 -
leetcode刷题:最长连续序列
HashSet是Java中的一种集合数据结构,它是基于哈希表的`Set`接口的实现。HashSet不允许包含重复的元素,如果尝试将重复的元素添加到HashSet中,那么添加操作将不会成功,并且原始集合的状态也不会改变。原创 2024-04-29 21:07:02 · 254 阅读 · 0 评论 -
leetcode刷题:字母异位词分组
同一组字母异位词中的字符串具备相同点,可以使用相同点作为一组字母异位词的标志,使用哈希表存储每一组字母异位词,哈希表的键为一组字母异位词的标志,哈希表的值为一组字母异位词列表。遍历每个字符串,对于每个字符串,得到该字符串所在的一组字母异位词的标志,将当前字符串加入该组字母异位词的列表中。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]输出: [[“a”]]原创 2024-04-28 17:24:55 · 345 阅读 · 0 评论 -
leetcode刷题:两数之和
面试造火箭,工作拧螺丝,话虽如此,背背八股文,刷刷算法题,也可以提高自己的编程素养,一切目的是为了上岸,在此就不咬文嚼字,追求茴香豆的茴有几种写法了,换句话说,就是不考虑时间或者空间复杂度,直接采用最容易想到的常规手段。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。只会存在一个有效答案。原创 2024-04-28 11:58:37 · 304 阅读 · 2 评论 -
如何写好一份技术应聘简历
简历是面试的敲门砖,是自己给公司的第一印象,简历好坏关乎求职成败。我们先看看通用简历的一些标准短小精悍:一页最佳,不超过两页STAR原则:注重说明在什么背景(时间,场所Situation)做过什么样的工作/项目(Task),这个工作/项目最好与所应聘工作相关,怎么做的,和谁一起做的,自己在团队中的角色(Action),最后的结果(Result)真实客观针对性作为攻城狮的一员,当然是关心技...原创 2017-08-02 14:20:41 · 3056 阅读 · 1 评论 -
Android面试整理
Android基础知识原创 2016-10-07 20:29:33 · 952 阅读 · 0 评论