首页 > 其他分享 >2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小

时间:2023-12-03 11:03:23浏览次数:40  
标签:last nums int 房屋 小偷 return 窃取


2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金,

现在有一位小偷计划从这些房屋中窃取现金,

由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋,

小偷的 窃取能力 定义为他在窃取过程中能从单间房屋中窃取的 最大金额,

给你一个整数数组 nums 表示每间房屋存放的现金金额,

形式上,从左起第 i 间房屋中放有 nums[i] 美元,

另给你一个整数 k ,表示窃贼将会窃取的最少房屋数。

小偷一定要要窃取至少 k 间房屋,返回小偷的 最小 窃取能力。

输入:nums = [2,3,5,9], k = 2。

输出:5。

来自左程云

答案2023-11-01:

go代码用chatgpt编写,不需要修改。

rust、c++、c代码用 灵捷3.5 编写,不需要修改,个人怀疑是调用了chatgpt的api,问了一下,并不是用的chatgpt。

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小_开发语言

大体步骤如下:

1.如果房屋数量为0,则返回0。

2.如果房屋数量为1,则返回该房屋内的现金金额。

3.如果房屋数量为2,则返回较大金额的房屋的现金金额。

4.初始化变量lastLast为第一个房屋的现金金额,last为第一和第二个房屋中较大金额的现金金额。

5.从第三个房屋开始,循环遍历每个房屋:

  • 计算两种情况下的窃取金额:不窃取当前房屋的金额p1,窃取当前房屋的金额与上上个房屋的金额之和p2。
  • 取两者中较大的金额为当前房屋窃取的最大金额cur。
  • 更新lastLast和last为上一个房屋的现金金额last和当前房屋的现金金额cur。

6.返回最后一个房屋的现金金额last作为小偷的最小窃取能力。

总的时间复杂度为O(n),其中n是房屋的数量。总的额外空间复杂度为O(1),只需要几个变量来存储中间结果。

go完整代码如下:

package main

import (
	"fmt"
)

func rob(nums []int) int {
	n := len(nums)
	if n == 0 {
		return 0
	}
	if n == 1 {
		return nums[0]
	}
	if n == 2 {
		return max(nums[0], nums[1])
	}

	lastLast := nums[0]
	last := max(nums[0], nums[1])
	for i := 2; i < n; i++ {
		p1 := last
		p2 := nums[i] + lastLast
		cur := max(p1, p2)
		lastLast = last
		last = cur
	}
	return last
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func main() {
	nums := []int{1, 2, 3, 1}
	result := rob(nums)
	fmt.Println(result)
}

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小_golang_02

rust完整代码如下:

fn rob(nums: Vec<i32>) -> i32 {
    let n = nums.len();
    if n == 1 {
        return nums[0];
    }
    if n == 2 {
        return nums[0].max(nums[1]);
    }
    let mut last_last = nums[0];
    let mut last = nums[0].max(nums[1]);
    for i in 2..n {
        let p1 = last;
        let p2 = nums[i] + last_last;
        let cur = p1.max(p2);
        last_last = last;
        last = cur;
    }
    last
}

fn main() {
    let nums = vec![1, 2, 3, 1];
    let result = rob(nums);
    println!("{}", result);
}

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小_后端_03

c++完整代码如下:

#include <iostream>
#include <vector>
#include <algorithm>

int rob(std::vector<int>& nums) {
    int n = nums.size();
    if (n == 1) {
        return nums[0];
    }
    if (n == 2) {
        return std::max(nums[0], nums[1]);
    }

    int lastLast = nums[0];
    int last = std::max(nums[0], nums[1]);
    for (int i = 2; i < n; i++) {
        int p1 = last;
        int p2 = nums[i] + lastLast;
        int cur = std::max(p1, p2);
        lastLast = last;
        last = cur;
    }
    return last;
}

int main() {
    std::vector<int> nums = { 1, 2, 3, 1 };
    int result = rob(nums);
    std::cout << "Maximum amount that can be robbed: " << result << std::endl;
    return 0;
}

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小_后端_04

c完整代码如下:

#include <stdio.h>
#include <stdlib.h>

int rob(int* nums, int numsSize) {
    if (numsSize == 0) {
        return 0;
    }
    if (numsSize == 1) {
        return nums[0];
    }
    if (numsSize == 2) {
        return (nums[0] > nums[1]) ? nums[0] : nums[1];
    }

    int lastLast = nums[0];
    int last = (nums[0] > nums[1]) ? nums[0] : nums[1];
    int cur;

    for (int i = 2; i < numsSize; i++) {
        int p1 = last;
        int p2 = nums[i] + lastLast;
        cur = (p1 > p2) ? p1 : p2;
        lastLast = last;
        last = cur;
    }
    return cur;
}

int main() {
    int nums[] = { 1, 2, 3, 1 };
    int numsSize = sizeof(nums) / sizeof(nums[0]);
    int result = rob(nums, numsSize);
    printf("%d\n", result);

    return 0;
}

2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小偷计划从这些房屋中窃取现金, 由于相邻的房屋装有相互连通的防盗系统,所以小偷 不会窃取相邻的房屋, 小_后端_05


标签:last,nums,int,房屋,小偷,return,窃取
From: https://blog.51cto.com/moonfdd/8665742

相关文章

  • springboot008房屋租赁系统-计算机毕业设计源码+LW文档
    摘 要社会的发展和科学技术的进步,互联网技术越来越受欢迎。网络计算机的生活方式逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。互联网具有便利性,速度快,效率高,成本低等优点。因此,构建符合自己要求的操作系统是非常有意义的。本文从用户的功能要求出发,建立了房屋租赁......
  • 博弈论——小偷与守卫混合纳什均衡精解(十九)
    从经济学角度上讲,对于理性的人,犯罪成本高于犯罪收益,自然就不会去犯罪。所以简单回答就是,违法成本变高会减少犯罪。使违法成本变高有很多方法,最直接最常见的就是严打,即加大对犯罪的处罚力度。小偷-守卫博弈有助于我们对这些方面的思考,该博弈在双方采用纯策略的情况下不存在纳什均衡......
  • 房屋租赁管理系统源码 (课设) 房屋管理系统 租房管理系统
    项目源码获取方式放在文章末尾处项目技术数据库:Mysql5.7(或Mysql8.0)数据表:6张开发语言:Java(jdk1.8)开发工具:idea前端技术:Vue后端技术:Springboot 功能简介该项目是一个房屋租赁系统,分为房东端,租客端。 房东端        房屋信息操作        租金操作       ......
  • 动态规划之房屋染色
    这里有n个房子在一列直线上,现在我们需要给房屋染色,共有k种颜色。每个房屋染不同的颜色费用也不同,你希望每两个相邻的房屋颜色不同费用通过一个nxk的矩阵给出,比如cost[0][0]表示房屋0染颜色0的费用,cost[1][2]表示房屋1染颜色2的费用。样例:输入:costs=[[14,2,11],[11,14,5],[......
  • 2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小
    2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金,现在有一位小偷计划从这些房屋中窃取现金,由于相邻的房屋装有相互连通的防盗系统,所以小偷不会窃取相邻的房屋,小偷的窃取能力定义为他在窃取过程中能从单间房屋中窃取的最大金额,给你一个整数数组nums......
  • 2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金, 现在有一位小
    2023-11-01:用go语言,沿街有一排连续的房屋。每间房屋内都藏有一定的现金,现在有一位小偷计划从这些房屋中窃取现金,由于相邻的房屋装有相互连通的防盗系统,所以小偷不会窃取相邻的房屋,小偷的窃取能力定义为他在窃取过程中能从单间房屋中窃取的最大金额,给你一个整数数组nums表示每......
  • 56基于java的房屋租赁系统设计与实现
    本章节给大家带来一个基于java房屋租赁系统设计与实现,可适用于java租房网站java房子租用,房屋租用,租房管理系统,房屋预约系统,预约看房,房屋资讯,在线房屋信息管理系统等。引言经过调查,目前现代人的生活节奏加快,生活压力也在逐渐的增加,网络的发展给人们带来的便利,随着网上租房网站信......
  • cesium 3dtils 房屋打组 实现单个房屋选中效果
    效果 scenetree.json记录的是模型的数据,这种element的节点上记录的name就是建模时给建筑物打组时起的名字,后面cesium创建模型时,建筑物上的每个feature都会添加这个name参数,根据这个name参数可以找到这个模型中的所有feature  handler.setInputAction((event)=>......
  • 14 | 网络安全:和别人共用Wi-Fi时,你的信息会被窃取吗?
    内网中的最小权限原则对内网进行水平划分:划分不同的身份和权限对内网进行垂直划分:内、外网隔离 有线和无线网络安全无线网络的防护:使用安全协议(WAP2协议),认证技术(“强制门户”,再次认证),以及对办公网络中的未知热点进行扫描,避免伪造热点有线网络安全防护:只需要防护劫持。第一......
  • 基于web房屋租售管理系统-计算机毕业设计源码+LW文档
    摘 要当今,在这个信息化的时代,人们的生活越来越便利。因此如果运用java技术建设房屋租售管理系统系统使其与互联网有效的结合起来,实现房屋租售管理系统系统的网络化,为学校师生乃至社会提供更为全面、便捷的服务。根据本系统的研究现状和发展方向,首先系统从需求分析、结构设计、数......