国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

淘寶的網(wǎng)站建設(shè)seo分析報告怎么寫

淘寶的網(wǎng)站建設(shè),seo分析報告怎么寫,百度推廣代理,百度小程序注冊流程參考視頻: 單調(diào)?!玖壑苜?364】 文章目錄 8048. 最大二進制奇數(shù)100049. 美麗塔 I100048. 美麗塔 II100047. 統(tǒng)計樹中的合法路徑數(shù)目 8048. 最大二進制奇數(shù) 題目鏈接 給你一個 二進制 字符串 s ,其中至少包含一個 1 。 你必須按某種方式 重新排列 字…

參考視頻:

單調(diào)?!玖壑苜?364】


文章目錄

  • 8048. 最大二進制奇數(shù)
  • 100049. 美麗塔 I
  • 100048. 美麗塔 II
  • 100047. 統(tǒng)計樹中的合法路徑數(shù)目

8048. 最大二進制奇數(shù)

題目鏈接

給你一個 二進制 字符串 s ,其中至少包含一個 '1' 。

你必須按某種方式 重新排列 字符串中的位,使得到的二進制數(shù)字是可以由該組合生成的 最大二進制奇數(shù)

以字符串形式,表示并返回可以由給定組合生成的最大二進制奇數(shù)。

注意 返回的結(jié)果字符串 可以 含前導(dǎo)零。


思路:把第一個 1 放在末尾,其他的 1 從第一個從前往后進行交換,

void swap(char* s, int i, int j) {char t = s[i];s[i] = s[j];s[j] = t;
}char* maximumOddBinaryNumber(char* s) {int length = strlen(s);bool flag = false;int i = 0, j = 0;while (i < length-1) {if (s[i] == '1') {if (!flag) {flag = true;swap(s, i, length - 1);}else {swap(s, i, j);j++;i++;}}else {i++;}}return s;
}

為什么下面這里不管 s[i] 是否等于 s[j]

swap(s, i, j);
j++;
i++;

如果一開始 j 指向了0,那么 i 會往后遍歷尋找到下一個 1 ,進行交換后,i、j 都后移 1 位,此時 j 不可能指向 1,因為上一個 1 已經(jīng)被交換到前面去了。

如果一開始 j 指向了 1 ,那么 i、j 一起后移,直到指向了 0,然后 i 單獨后移尋找下一個 1,這就重現(xiàn)了之前的步驟。

也就是說,j 一定會指向在 0 的位置,哪怕它一開始就指向在 1。于是,不會出現(xiàn) 1 和 1交換的情況,除了當(dāng)前元素與當(dāng)前元素自身交換時。

100049. 美麗塔 I

題目鏈接

給你一個長度為 n 下標(biāo)從 0 開始的整數(shù)數(shù)組 maxHeights

你的任務(wù)是在坐標(biāo)軸上建 n 座塔。第 i 座塔的下標(biāo)為 i ,高度為 heights[i] 。

如果以下條件滿足,我們稱這些塔是 美麗 的:

  1. 1 <= heights[i] <= maxHeights[i]
  2. heights 是一個 山狀 數(shù)組。

如果存在下標(biāo) i 滿足以下條件,那么我們稱數(shù)組 heights 是一個 山狀 數(shù)組:

  • 對于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]
  • 對于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]

請你返回滿足 美麗塔 要求的方案中,高度和的最大值

  • 1 <= n == maxHeights <= 10^3
  • 1 <= maxHeights[i] <= 10^9

暴力枚舉:每個元素為山頂?shù)那闆r都枚舉一次,計算每一次的數(shù)組和,和最大

// 計算數(shù)組和
long long calculateSum(int* arr,int length) {long long sum = 0;for (int i = 0; i < length; i++) {sum += arr[i];}return sum;
}long long maximumSumOfHeights(int* maxHeights, int maxHeightsSize) {long long max = 0;int* temp = (int*)malloc(maxHeightsSize * sizeof(int));for (int i = 0; i < maxHeightsSize; i++) {for (int i = 0; i < maxHeightsSize; i++) {temp[i] = maxHeights[i];}// 對 i 左邊進行同化,削平山頂for (int j = i; j >= 1; j--) {if (temp[j] < temp[j - 1]) {temp[j - 1] = temp[j];}}// 對 i 右邊進行同化for (int j = i; j < maxHeightsSize - 1; j++) {if (temp[j] < temp[j + 1]) {temp[j + 1] = temp[j];}}long long t = calculateSum(temp, maxHeightsSize);max = max > t ? max : t;}free(temp); // 釋放動態(tài)分配的內(nèi)存return max;
}

100048. 美麗塔 II

題目鏈接

給你一個長度為 n 下標(biāo)從 0 開始的整數(shù)數(shù)組 maxHeights 。

你的任務(wù)是在坐標(biāo)軸上建 n 座塔。第 i 座塔的下標(biāo)為 i ,高度為 heights[i] 。

如果以下條件滿足,我們稱這些塔是 美麗 的:

  1. 1 <= heights[i] <= maxHeights[i]
  2. heights 是一個 山狀 數(shù)組。

如果存在下標(biāo) i 滿足以下條件,那么我們稱數(shù)組 heights 是一個 山狀 數(shù)組:

  • 對于所有 0 < j <= i ,都有 heights[j - 1] <= heights[j]
  • 對于所有 i <= k < n - 1 ,都有 heights[k + 1] <= heights[k]

請你返回滿足 美麗塔 要求的方案中,高度和的最大值

  • 1 <= n == maxHeights <= 10^5
  • 1 <= maxHeights[i] <= 10^9

思路:單調(diào)棧+前后綴數(shù)組

維護一個單調(diào)棧,棧元素為數(shù)組元素下標(biāo),對應(yīng)的值從棧底到棧頂嚴(yán)格遞增。

從后往前遍歷數(shù)組,如果棧非空且當(dāng)前元素小于等于棧頂元素,那么出棧,直到當(dāng)前元素大于棧頂元素,更新 sum 值,減去出棧的,注意棧為空的情況。退出循環(huán)后,sum 加上要進棧的當(dāng)前元素,它會覆蓋前面 n-ist.top()-previous 個元素。將當(dāng)前 sum 值加入到 suffix 數(shù)組。

從前往后遍歷時要完成的操作目的是一樣的。

最后,選出 suffix[i]+prefix[i]-maxHeights[i] 最大的值。

#include<iostream>
#include<stack>
#include<vector>
#include<math.h>
using namespace std;
typedef long long ll;
long long maximumSumOfHeights(vector<int>& maxHeights) {int n = maxHeights.size();vector<ll> suffix(n);stack<int> st;ll sum = 0;for (int i = n - 1; i >= 0; i--) {while (!st.empty() && maxHeights[i] <= maxHeights[st.top()]) {int previous = st.top();st.pop();if (st.empty()) {sum -= (ll)maxHeights[previous] * (n - previous);}else {sum -= (ll)maxHeights[previous] * (st.top() - previous);}}if (st.empty()) {sum += (ll)maxHeights[i] * (n - i);}else {sum += (ll)maxHeights[i] * (st.top() - i);}suffix[i] = sum;st.push(i);}st = stack<int>();sum = 0;vector<ll> prefix(n);for (int i = 0; i < n; i++) {while (!st.empty() && maxHeights[i] <= maxHeights[st.top()]) {int previous = st.top();st.pop();if (st.empty()) {sum -= (ll)maxHeights[previous] * (previous + 1);}else {sum -= (ll)maxHeights[previous] * (previous - st.top());}}if (st.empty()) {sum += (ll)maxHeights[i] * (i + 1);}else {sum += (ll)maxHeights[i] * (i-st.top());}prefix[i] = sum;st.push(i);}ll maxSum = 0;for (int i = 0; i < n; i++) {maxSum = max(maxSum, prefix[i] + suffix[i] - maxHeights[i]);}return maxSum;
}
int main() {vector<int> maxHeights = {5, 3, 4, 1, 1};cout << maximumSumOfHeights(maxHeights);
}

100047. 統(tǒng)計樹中的合法路徑數(shù)目

題目鏈接

給你一棵 n 個節(jié)點的無向樹,節(jié)點編號為 1n 。給你一個整數(shù) n 和一個長度為 n - 1 的二維整數(shù)數(shù)組 edges ,其中 edges[i] = [ui, vi] 表示節(jié)點 uivi 在樹中有一條邊。

請你返回樹中的 合法路徑數(shù)目 。

如果在節(jié)點 a 到節(jié)點 b 之間 恰好有一個 節(jié)點的編號是質(zhì)數(shù),那么我們稱路徑 (a, b)合法的 。

注意:

  • 路徑 (a, b) 指的是一條從節(jié)點 a 開始到節(jié)點 b 結(jié)束的一個節(jié)點序列,序列中的節(jié)點 互不相同 ,且相鄰節(jié)點之間在樹上有一條邊。
  • 路徑 (a, b) 和路徑 (b, a) 視為 同一條 路徑,且只計入答案 一次 。
  • 1 <= n <= 10^5
  • edges.length == n - 1
  • edges[i].length == 2
  • 1 <= ui, vi <= n
  • 輸入保證 edges 形成一棵合法的樹。
const int MAX_NUM = 1e5;
bool isNonPrime[MAX_NUM + 1]; // 非質(zhì)數(shù)=true,質(zhì)數(shù)=falseint initialize = []() {isNonPrime[1] = true;for (int num = 2; num * num <= MAX_NUM; num++) {if (!isNonPrime[num]) {for (int multiple = num * num; multiple <= MAX_NUM; multiple += num) {isNonPrime[multiple] = true;}}}return 0;
}();class Solution {
public:long long countPaths(int numNodes, vector<vector<int>> &edges) {// 創(chuàng)建鄰接列表表示圖的結(jié)構(gòu)vector<vector<int>> adjacencyList(numNodes + 1);for (auto &edge : edges) {int node1 = edge[0], node2 = edge[1];adjacencyList[node1].push_back(node2);adjacencyList[node2].push_back(node1);}// 用于記錄DFS遍歷的節(jié)點vector<int> visitedNodes;// 定義DFS函數(shù),遍歷與當(dāng)前節(jié)點相關(guān)的非質(zhì)數(shù)節(jié)點function<void(int, int)> dfs = [&](int currentNode, int parentNode) {visitedNodes.push_back(currentNode);for (int adjacentNode : adjacencyList[currentNode]) {if (adjacentNode != parentNode && isNonPrime[adjacentNode]) {dfs(adjacentNode, currentNode);}}};// 用于記錄每個節(jié)點所在子樹的節(jié)點數(shù)量vector<int> subtreeSize(numNodes + 1);long long result = 0;for (int currentNode = 1; currentNode <= numNodes; currentNode++) {if (isNonPrime[currentNode]) continue; // 跳過非質(zhì)數(shù)節(jié)點int nonPrimeNodesSum = 0;for (int adjacentNode : adjacencyList[currentNode]) {if (!isNonPrime[adjacentNode]) continue; //跳過質(zhì)數(shù)節(jié)點if (subtreeSize[adjacentNode] == 0) {visitedNodes.clear();// 執(zhí)行DFS遍歷,記錄子樹中的節(jié)點dfs(adjacentNode, -1);for (int node : visitedNodes) {subtreeSize[node] = visitedNodes.size();}}// 計算與當(dāng)前節(jié)點相關(guān)的路徑數(shù)量result += (long long)subtreeSize[adjacentNode] * nonPrimeNodesSum;nonPrimeNodesSum += subtreeSize[adjacentNode];}// 加上從當(dāng)前節(jié)點出發(fā)的路徑數(shù)量result += nonPrimeNodesSum;}return result;}
};
http://m.aloenet.com.cn/news/43699.html

相關(guān)文章:

  • 網(wǎng)站如何提高權(quán)重做百度推廣怎么做才能有電話
  • 響應(yīng)式網(wǎng)站建設(shè)效果迅雷下載磁力天堂
  • 萬網(wǎng)個人網(wǎng)站備案查詢東莞今天的最新通知
  • 有關(guān)做聚合物電池公司的網(wǎng)站網(wǎng)站優(yōu)化外包推薦
  • 如何再國外網(wǎng)站做折扣什么是seo?
  • 中關(guān)村在線官方網(wǎng)站電腦首頁關(guān)鍵詞排名
  • 愛站網(wǎng)排行榜武漢抖音seo搜索
  • 網(wǎng)站設(shè)計app微信推廣方式有哪些
  • sf網(wǎng)站怎么建設(shè)網(wǎng)站被禁用如何解決
  • 佛山網(wǎng)站建設(shè)策劃網(wǎng)站推廣模式
  • 自動化培訓(xùn)網(wǎng)站建設(shè)網(wǎng)絡(luò)營銷到底是干嘛的
  • 網(wǎng)站建設(shè)大概費用怎么建網(wǎng)站賺錢
  • 做h5頁面有哪些好網(wǎng)站廣州競價外包
  • 網(wǎng)站的運行與維護艾滋病阻斷藥有哪些
  • 建站寶盒開通百度seo培訓(xùn)班
  • 網(wǎng)頁游戲傳奇霸業(yè)攻略搜索引擎優(yōu)化的英語簡稱
  • 微商軟件商城24小時整站排名優(yōu)化品牌
  • 政務(wù)網(wǎng)站隊伍建設(shè)情況匯報怎么免費創(chuàng)建個人網(wǎng)站
  • 阿里云 多域名解析 到不同的網(wǎng)站網(wǎng)站的友情鏈接是什么意思
  • 建筑公司網(wǎng)站廣告宣傳語重慶 seo
  • 鎮(zhèn)江網(wǎng)站優(yōu)化哪家好百度推廣要自己建站嗎
  • 手機怎樣設(shè)計網(wǎng)站建設(shè)seo關(guān)鍵詞推廣
  • WordPress插件后天怎么編寫青島谷歌seo
  • 大型電子商務(wù)網(wǎng)站建設(shè)郴州網(wǎng)站定制
  • 番禺人才網(wǎng)官網(wǎng)單位招考關(guān)鍵詞優(yōu)化公司推薦
  • 網(wǎng)站頁面設(shè)計需求網(wǎng)絡(luò)推廣官網(wǎng)首頁
  • 網(wǎng)頁與網(wǎng)站的關(guān)系互聯(lián)網(wǎng)廣告代理可靠嗎
  • 做網(wǎng)站江門天津百度seo排名優(yōu)化
  • wordpress5.2.2下載seo有哪些經(jīng)典的案例
  • 鎮(zhèn)江百度競價南昌seo管理