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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次

發(fā)布時間:2025/1/21 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2016年小米校招筆試第一題(西安站)

1?給定一些線段,線段有起點和終點,求這些線段的覆蓋長度,重復(fù)的部分只計算一次。

參考解法(Java版):

package XiaoMi;/********************************************************* 算法思想:將長線段細分為長度為1的小段,用布爾數(shù)組記錄每一個小段;* 遍歷所有長段,如果有覆蓋則在數(shù)組中把該索引處的布爾值標(biāo)記為ture;* 最后,遍歷布爾數(shù)組中所有值為ture的小段個數(shù),即為所求總覆蓋長度。* ******************************************************/ public class test13 {// 指定線段中點的最大范圍private final static int N = 99999;// 布爾數(shù)組用來記錄已覆蓋小段private static boolean b[];// 定義線段的數(shù)據(jù)結(jié)構(gòu)class XianDuan {int start; //線段起點int end; //線段終點}// 遍歷布爾數(shù)組求總覆蓋長度static int sum(XianDuan[] xd) {b = new boolean[N];int start = 0;int end = 0;// 標(biāo)記過程for (int i = 0; i < xd.length; i++) {for (int j = xd[i].start; j < xd[i].end; j++) {b[j] = true;//System.out.println("置為true");}// 找到boolean數(shù)組索引的最大值if (xd[i].end > end) {end = xd[i].end;}// 找到boolean數(shù)組索引的最小值if (xd[i].start < start) {start = xd[i].start;}}// 統(tǒng)計過程int count = 0;for (int i = start; i < end; i++) {if (b[i]) {count++;}} return count;}public static void main(String[] args) {/** A a = new A(); A.B b = a.new B(); //內(nèi)部類實例化*/test13 tt = new test13();test13.XianDuan x1 = tt.new XianDuan();x1.start = 1;x1.end = 3;test13.XianDuan x2 = tt.new XianDuan();x2.start = 2;x2.end = 6;test13.XianDuan x3 = tt.new XianDuan();x3.start = 11;x3.end = 12;test13.XianDuan x4 = tt.new XianDuan();x3.start = 10;x3.end = 14;XianDuan xx[] = { x1, x2, x3, x4 };System.out.println(sum(xx));} }
運行結(jié)果:

9

總結(jié)

以上是生活随笔為你收集整理的【小米校招笔试】给定一些线段,线段有起点和终点,求这些线段的覆盖长度,重复的部分只计算一次的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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