亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

數(shù)組空間Given a sequence of numbers (or arra

系統(tǒng) 1974 0

本篇文章是一篇關(guān)于數(shù)組空間的帖子

???? ? ? 目題要求如下:給定一列數(shù)組,找出在這個數(shù)組中同相據(jù)數(shù)涌現(xiàn)置位的最大差值,例如:1, 2, 3, 4, 1, 1, 7, 4, max(1) = 5, max(2) = 0, max(4) = 4;

???? ? ? 給出兩種法方,一種是應(yīng)用hash,種這法方比擬有局限性,首先,如果數(shù)組中的某一個值比擬大的話,應(yīng)用hash就會比擬費浪空間,定義這樣的據(jù)數(shù)結(jié)構(gòu):

???? typedef struct data_s? {

???? int value;

???? int start;

???? int end;

???? }

???? 設(shè)定這樣一個hash數(shù)組,然后遍歷數(shù)組,記載數(shù)字第一次涌現(xiàn)的置位并堅持穩(wěn)定,同相數(shù)字如果后之再涌現(xiàn),則更新?lián)?shù)結(jié)構(gòu)中的end,這樣數(shù)組被遍歷一遍后之,有所數(shù)字第一次涌現(xiàn)的置位和最后一次涌現(xiàn)的置位都會被記載下來,應(yīng)用的時間復(fù)雜度和空間復(fù)雜度均是O(N),但是種這法方局限性比擬大,就是空間的損耗,和不能判斷要分配多少空間。既然我們不能態(tài)靜的分配定一的空間來記載這些信息,我們可以動態(tài)的分配,應(yīng)用二叉查找樹可以滿意這一點。但是空間復(fù)雜度和時間復(fù)雜度有點高,時間復(fù)雜度是O(n*logn), 空間復(fù)雜度是O(n)。但是種這做法比用hash好的多,在不要求速快決解提問題的情況下應(yīng)用二叉查找樹是一個不錯的擇選,上面給出碼代,如果有不正確的地方,敬請指出:

????

????每日一道理
曾經(jīng)輝煌過,曾經(jīng)凋零過,這可是你至死不渝的生活嗎?我親愛的母親—大自然。多少次,我伏在地上,去聆聽你沉重的脈搏聲;多少次,我佇立在山前,去感受那松濤千年的浩瀚。你的豪壯,足以讓中華民族騰飛;你的無私,譜寫了一曲曲感人至深的千古壯曲。
    #include<iostream>

using namespace std;



typedef struct data_s {

	int value;

	int start;

	int end;

}data_t;



typedef struct tree_node_s {

	data_t data;

	struct tree_node_s *lchild;

	struct tree_node_s *rchild;

}tree_node_t, *BSTree;



int tree_search(BSTree T, int value, tree_node_t **p, tree_node_t *f) {

	if (NULL == T) {

		*p = f;

		return 0;

	}

	if (value == T->data.value) {

		*p = T;

		return 1;

	} else if (value < T->data.value) {

		return tree_search(T->lchild, value, p, T);

	} else {

		return tree_search(T->rchild, value, p, T);

	}

}



void tree_insert(BSTree *T, int value, int index) {

	tree_node_t *p = NULL;

	if (!tree_search(*T, value, &p, NULL)) {

		tree_node_t *temp = (tree_node_t*)malloc(sizeof(tree_node_t));

		temp->data.value = value;

		temp->data.start = index;

		temp->data.end   = index;

		temp->lchild = NULL;

		temp->rchild = NULL;

		if (NULL == (*T)) {

			*T = temp;

		} else if (value < p->data.value) {

			p->lchild = temp;

		} else {

			p->rchild = temp;

		}

	} else {

		p->data.end = index;

	}

}



void tree_traverse(BSTree T) {

	if (T) {

		tree_traverse(T->lchild);

		cout << "value:" << T->data.value << " start at:" << T->data.start <<

			" end at:" << T->data.end << " distance:" << T->data.end - T->data.start << endl;

		tree_traverse(T->rchild);

	}

}



void tree_destroy(BSTree *T) {

	if (*T) {

		tree_destroy(&(*T)->lchild);

		tree_destroy(&(*T)->rchild);

		free((*T));

	}

}



int main(int argc, char *argv[]) {

	int i;

	BSTree T = NULL;

	int arr[] = {1, 2, 3, 4, 1, 1, 7, 4};

	int len = sizeof(arr) / sizeof(int);

	for (i = 0; i < len; i++) {

		tree_insert(&T, arr[i], i);

	}

	tree_traverse(T);

	tree_destroy(&T);

	cin.get();

	return 0;

}
  

文章結(jié)束給大家分享下程序員的一些笑話語錄: 一程序員告老還鄉(xiāng),想安度晚年,于是決定在書法上有所造詣。省略數(shù)字……,準(zhǔn)備好文房4寶,揮起毛筆在白紙上鄭重的寫下:Hello World

數(shù)組空間Given a sequence of numbers (or array).Find the maximum distance between all the same numbers.


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲在线中文字幕 | 久久天天躁狠狠躁夜夜躁 | 香蕉成人在线视频 | 美女久久久久 | 欧美高清一区二区三 | 亚洲欧美日韩中文字幕在线 | 天天射久久 | 亚洲精品成人网久久久久久 | 亚洲色图国产精品 | 久久久精品2018免费观看 | 久久成年人| 在线视频一区二区日韩国产 | 妇女毛片 | 日韩字幕| 国产精品久久久久激情影院 | 亚洲情综合五月天 | 亚洲欧洲日韩国产一区二区三区 | 亚洲欧美日韩国产精品26u | 99免费| 欧美日韩国产欧美 | 在线中文字幕网 | 色综合五月激情综合色一区 | 四虎精品视频 | 婷婷综合 在线 | 亚洲高清中文字幕一区二区三区 | 亚洲欧美日韩国产vr在线观 | 欧美高清一区二区 | 日本三级强在线观看 | 国产成人精品免费影视大全 | 国产成人精品三区 | 精品国产乱码一区二区三区麻豆 | 狠狠色综合久久婷婷 | 国产一级精品高清一级毛片 | 国产美女亚洲精品久久久毛片 | 奇米影音 | 四虎精品影院4hutv四虎 | 咪咪色网 | 欧美成人性视频在线黑白配 | 国产一级毛片视频在线! | 久久国产在线观看 | 欧美一级录像 |