日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, k, l) 满足

發(fā)布時(shí)間:2023/11/23 windows 41 coder

2023-11-22:用go語(yǔ)言,給你一個(gè)長(zhǎng)度為 n 下標(biāo)從 0 開(kāi)始的整數(shù)數(shù)組 nums。

它包含 1 到 n 的所有數(shù)字,請(qǐng)你返回上升四元組的數(shù)目。

如果一個(gè)四元組 (i, j, k, l) 滿足以下條件,我們稱它是上升的:

0 <= i < j < k < l < n 且

nums[i] < nums[k] < nums[j] < nums[l] 。

輸入:nums = [1,3,2,4,5]。

輸出:2。

來(lái)自左程云。

答案2023-11-22:

go代碼用靈捷3.5編寫(xiě)。

rust代碼用訊飛星火編寫(xiě)。

c++的代碼用天工編寫(xiě)。

靈捷3.5本來(lái)用起來(lái)還可以,但有次數(shù)限制,故放棄。

大體過(guò)程如下:

算法1:countQuadruplets1

1.初始化變量:n為數(shù)組長(zhǎng)度,ans為結(jié)果計(jì)數(shù)器,dp為動(dòng)態(tài)規(guī)劃數(shù)組。

2.遍歷數(shù)組,從第二個(gè)元素開(kāi)始(下標(biāo)為1):

a.初始化計(jì)數(shù)器cnt為0。

b.遍歷當(dāng)前元素之前的所有元素(下標(biāo)小于當(dāng)前元素的下標(biāo)),如果當(dāng)前元素大于前一個(gè)元素,則將dp[j]加到ans上,并將cnt加1。

c.再次遍歷當(dāng)前元素之前的所有元素(下標(biāo)小于當(dāng)前元素的下標(biāo)),如果當(dāng)前元素大于前一個(gè)元素,則將cnt加到dp[j]上;否則,將dp[j]加上cnt的整數(shù)值。

3.返回ans作為結(jié)果。

算法2:countQuadruplets2

1.初始化變量:n為數(shù)組長(zhǎng)度,ans為結(jié)果計(jì)數(shù)器,dp為動(dòng)態(tài)規(guī)劃數(shù)組。

2.遍歷數(shù)組,從第二個(gè)元素開(kāi)始(下標(biāo)為1):

a.初始化計(jì)數(shù)器cnt為0。

b.遍歷當(dāng)前元素之前的所有元素(下標(biāo)小于當(dāng)前元素的下標(biāo)),如果當(dāng)前元素大于前一個(gè)元素,則將dp[j]加到ans上,并將cnt加1;否則,將dp[j]加上cnt的整數(shù)值。

3.返回ans作為結(jié)果。

總的時(shí)間復(fù)雜度:兩種算法的時(shí)間復(fù)雜度都是O(n^2),因?yàn)樾枰獌蓪友h(huán)遍歷數(shù)組。

總的額外空間復(fù)雜度:兩種算法的空間復(fù)雜度都是O(n),因?yàn)樾枰褂靡粋€(gè)長(zhǎng)度為n的動(dòng)態(tài)規(guī)劃數(shù)組dp。

go完整代碼如下:

package main

import "fmt"

func countQuadruplets1(nums []int) int64 {
	n := len(nums)
	var ans int64
	dp := make([]int64, n)
	for l := 1; l < n; l++ {
		cnt := 0
		for j := 0; j < l; j++ {
			if nums[j] < nums[l] {
				ans += dp[j]
			}
		}

		cnt = 0
		for j := 0; j < l; j++ {
			if nums[j] < nums[l] {
				cnt++
			} else {
				dp[j] += int64(cnt)
			}
		}
	}
	return ans
}

func countQuadruplets2(nums []int) int64 {
	n := len(nums)
	var ans int64
	dp := make([]int64, n)
	for l := 1; l < n; l++ {
		cnt := 0
		for j := 0; j < l; j++ {
			if nums[j] < nums[l] {
				ans += dp[j]
				cnt++
			} else {
				dp[j] += int64(cnt)
			}
		}
	}
	return ans
}

func main() {
	nums := []int{1, 3, 2, 4, 5}
	fmt.Println(countQuadruplets1(nums))
	fmt.Println(countQuadruplets2(nums))
}

rust完整代碼如下:

fn count_quadruplets1(nums: Vec<i32>) -> i64 {
    let n = nums.len();
    let mut ans = 0;
    let mut dp = vec![0; n];
    for l in 1..n {
        let mut cnt = 0;
        for j in 0..l {
            if nums[j] < nums[l] {
                ans += dp[j];
                cnt += 1;
            } else {
                dp[j] += cnt;
            }
        }
    }
    ans as i64
}

fn count_quadruplets2(nums: Vec<i32>) -> i64 {
    let n = nums.len();
    let mut ans = 0;
    let mut dp = vec![0; n];
    for l in 1..n {
        let mut cnt = 0;
        for j in 0..l {
            if nums[j] < nums[l] {
                ans += dp[j];
                cnt += 1;
            } else {
                dp[j] += cnt;
            }
        }
    }
    ans as i64
}

fn main() {
    let nums = vec![1, 3, 2, 4, 5];
    println!("count_quadruplets1: {}", count_quadruplets1(nums));
    let nums = vec![1, 3, 2, 4, 5];
    println!("count_quadruplets2: {}", count_quadruplets2(nums));
}

c++完整代碼如下:

#include <iostream>
#include <vector>
using namespace std;

long long countQuadruplets1(vector<int>& nums) {
    int n = nums.size();
    long long ans = 0;
    vector<long long> dp(n, 0);
    for (int l = 1; l < n; l++) {
        for (int j = 0; j < l; j++) {
            if (nums[j] < nums[l]) {
                ans += dp[j];
            }
        }
        int cnt = 0;
        for (int j = 0; j < l; j++) {
            if (nums[j] < nums[l]) {
                cnt++;
            }
            else {
                dp[j] += cnt;
                break;
            }
        }
    }
    return ans;
}

long long countQuadruplets2(vector<int>& nums) {
    int n = nums.size();
    long long ans = 0;
    vector<long long> dp(n, 0);
    for (int l = 1; l < n; l++) {
        int cnt = 0;
        for (int j = 0; j < l; j++) {
            if (nums[j] < nums[l]) {
                ans += dp[j];
                cnt++;
            }
            else {
                dp[j] += cnt;
            }
        }
    }
    return ans;
}

int main() {
    vector<int> nums = { 1, 3, 2, 4, 5 };
    cout << countQuadruplets1(nums) << endl;
    cout << countQuadruplets2(nums) << endl;
    return 0;
}

總結(jié)

以上是生活随笔為你收集整理的2023-11-22:用go语言,给你一个长度为 n 下标从 0 开始的整数数组 nums。 它包含 1 到 n 的所有数字,请你返回上升四元组的数目。 如果一个四元组 (i, j, k, l) 满足的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚欧成人在线 | 农村老熟妇乱子伦视频 | a视频在线免费观看 | 日日日日日日 | 又黄又爽网站 | aaa午夜 | 亚洲欧洲另类 | 精品乱子伦一区二区 | 午夜痒痒网 | 中文字幕韩日 | 日韩精品高清在线 | 中文日韩 | 精品少妇久久久 | 成年人在线视频免费观看 | 日韩特级黄色片 | 一级全黄毛片 | 国产精品2019 | 色综合久久精品亚洲国产 | 久久国产网站 | 国产天堂av | 中文字幕av在线免费 | 中文字幕超清在线免费观看 | 青青草视频网站 | 奶水旺盛的女人伦理 | 欧美福利在线观看 | 欧美一区二区三区视频在线观看 | av电影在线观看网址 | 伊人婷婷色 | 免费日批视频 | 香蕉福利| 五月天社区 | 奶波霸巨乳一二三区乳 | 两个女人互添下身爱爱 | 国产婷婷色一区二区三区在线 | 美女啪啪动态图 | 日本少妇xxxxxx | 亚洲精品乱码久久久久久蜜桃欧美 | 超碰69| 艳母在线视频 | 91麻豆成人精品国产免费网站 | www国产在线观看 | 在线观看视频一区 | 男生看的污网站 | 精品国产大片大片大片 | 黄色av网站在线 | 神马久久春色 | 色综合视频 | 国产成人日韩 | 国产精品一线天 | 亚洲av综合色区无码另类小说 | 久久av无码精品人妻系列试探 | 国产噜噜噜噜久久久久久久久 | 亚洲aⅴ乱码精品成人区 | 香蕉久久夜色精品国产使用方法 | 禁漫天堂黄漫画无遮挡观看 | 四虎免费视频 | 91精品黄色 | 日美一级片| 内射无码专区久久亚洲 | 东京久久 | 男生舔女生胸 | 91精品国产一区二区三竹菊影视 | 精品一区二区三区人妻 | 日本一区二区三区精品视频 | 成人在线视频一区二区 | 香蕉视频在线观看视频 | 日韩在线一级片 | 国产aa毛片 | 大学生一级片 | 中文字幕在线观看91 | 日韩福利网 | 五月婷婷社区 | 欧美重口另类 | 国产亚洲精品久久久久久777 | 日本午夜激情视频 | 国产人妖在线播放 | 亚洲女人av | 人妖粗暴刺激videos呻吟 | 91精品视频一区 | 欧美日韩一二区 | 欧美精品一二区 | 动漫涩涩免费网站在线看 | av青青草 | 性做久久久久久免费观看欧美 | 日本少妇一区 | 亚洲s码欧洲m码国产av | 美女极度色诱图片www视频 | 国产婷婷色一区二区在线观看 | mm131丰满少妇人体欣赏图 | 天天舔天天摸 | 精品久久久久久中文字幕人妻最新 | 国产激情网站 | 一区二区三区四区视频 | 亚洲久爱 | 黄色网战入口 | 亚洲视频一二三 | 黄色国产视频 | www.久久精品.com | 欧美日韩在线免费看 |