当前位置: 欣欣网 > 码农

30岁男人最无声的炫富,网友:老婆18岁~

2024-05-04码农

平时,我们总能听到各种各样的炫耀,有的直白,有的含蓄。

而我在网络上冲浪时,就发现了一网友的发帖:「30岁+男人最无声的炫富是什么?」最无声的炫富?

我猜肯定不是物质上的。

果不其然,一网友直接回复,「老板,这次理发帮我头发打薄一点。」程序员听了狂喜,这是大家30+后最希望的吧。

接着是「洗脚自由」。啊这,确实让人羡慕。

还有的网友来了一句,「老婆18岁」。不愧是你啊,但是也确实,作为一个男人来说。

大多数网友的回答,还是:「父母身体健康,有个老婆,不一定漂亮、钱多,但是爱你,支持你,一丫一小、粗茶淡饭、衣食无忧。」借你吉言,这里也祝福大家。

看完大家的炫富,每个人都想的不一样。但我觉得健康的家人,和睦的家庭,简单 而幸福的生活,这才是真正意义上的炫富吧。那么大家又是怎么看呢?

下面分享一道大厂的算法题

今日算法题,来自LeetC ode的第41题:缺失的第一个正数,很多 大厂都考过,下面是我的算法思路及实现,让我们来看看吧。

# 缺失的第一个正数

算法题目

给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。

引言

在编程和算法设计中,寻找未出现的最小正整数是一个经典问题。这个问题看似简单,但要高效地解决它,需要深入理解数组和算法的性质。本文将介绍一种高效的解法,并用JavaScript、Java和Go三种语言分别实现。

算法思路

  1. 原地哈希:

    首先,我们尝试将所有的正数放到其对应的索引位置上,即数值 1 应该放在数组索引 0 的位置,数值 2 放在索引 1 的位置,以此类推。通过这种方式,我们可以在 O(n) 的时间复杂度内找到缺失的最小正数。

  2. 处理边界情况:

    对于负数和大于数组长度的数,我们可以忽略不计,因为它们不会影响到我们寻找的最小正数。

  3. 寻找缺失的最小正数:

    经过上述处理后,我们遍历处理过的数组,找到第一个数值与索引不对应的位置,该位置的索引加 1 即为缺失的最小正数。如果数组中所有数值都正确对应其索引,说明数组是完整的,缺失的最小正数就是数组长度加 1。

代码实现

Java Scrip t实现

functionfirstMissingPositive(nums) {const n = nums.length;for (let i = 0; i < n; ++i) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] !== nums[i]) {const temp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = temp; } }for (let i = 0; i < n; ++i) {if (nums[i] !== i + 1) {return i + 1; } }return n + 1;}

Java实现

public classSolution {publicintfirstMissingPositive(int[] nums) {int n = nums.length;for (int i = 0; i < n; i++) {while (nums[i] > 0 && nums[i] <= n && nums[nums[i] - 1] != nums[i]) {int temp = nums[nums[i] - 1]; nums[nums[i] - 1] = nums[i]; nums[i] = temp; } }for (int i = 0; i < n; i++) {if (nums[i] != i + 1) {return i + 1; } }return n + 1; }}

Go实现

funcfirstMissingPositive(nums []int)int { n := len(nums)for i := 0; i < n; i++ {for nums[i] > 0 && nums[i] <= n && nums[nums[i]-1] != nums[i] { nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i] } }for i := 0; i < n; i++ {if nums[i] != i+1 {return i + 1 } }return n + 1}

算法解析

  • 时间复杂度: O(n),尽管内部有一个 while 循环,但每个元素最多只会被交换一次。

  • 空间复杂度: O(1),原地哈希不需要额外的空间。

  • 示例和测试

    以数组 [3, 4, -1, 1] 为例:

    1. 经过原地哈希处理,数组变为 [1, -1, 3, 4]。

    2. 遍历处理过的数组,发现索引 1 的值不为 2,因此缺失的最小正数为 2。

    总结

    本文介绍了寻找未出现的最小正整数的问题,并提供了一种原地哈希的方法来高效解决这个问题。

    热门推荐