1.遞增序列的概念:
一串數的序列,相領兩個數之間的差值是固定的,則此數列遞增序列,如:
1,2,3,4,5,6,7,8,9,10(差1) 1,3,5,7,9,11(差2)
大家一般都會了解,它的規律是第1個數與倒數第1個數的和,與第二個數與倒數第二個數的和是一樣的。這樣可以有這樣的計算方法:
(begin + end ) * ( end - begin ) / 2 就會計算出它的所有數值的總和。
但以上情況是在數值總數量為偶數是有效的,如果是奇數,則需要加入未計算的數值:
( (begin + end ) * ( end -begin ) ) / 2 + ( begin + ( end - begin ) / 2 + 1 ),這裡的第二個括號之中就是未加入的數值。
以上算式為了簡單表示,沒有加入對數列起點和結果是否在計算範圍之中的考慮,如果起點和結束點都在計算範圍,長度應+1,如果結束點不在計算範圍,和值應-1,如下:
( ( begin + end - 1 ) * ( end -begin ) 或
( ( begin + end ) * ( end - begin + 1 )
這裡乙個數列和計算普通方法:
begin是起點,end是結束點,space是間隔:
static ulong serialnumsum2( ulong begin, ulong end, ulong space )
return sum;}
這裡是使用簡算方法實現的方法,並且經過簡化只使用一條語句來完成:
#define aligned_end( begin, end, space ) ( end - ( ( end - begin ) % space ) )//計算對齊值
static ulong serialnumsum( ulong begin, ulong end, ulong space )
可以用以下方法測試一下,結果都是正確的:
for( int i = 0; i < 100; i ++ )}}
關於計算所有連續子串行的最大和
以下是在關於計算所有連續子串行的最大和問題中最暴力的方法 def lagerset sum arr res arr 0 sum res for i in range 1,len arr if sum 0 sum sum arr i else sum arr i if sum res res sum ...
同一條語句hive和impala查詢結果不一致
今天跑py程式,第一次資料錯亂,字段對應不上 分析原因 測試單獨執行,測試單獨上傳檔案,測試hdfs客戶端上傳檔案 最後發現,多次寫入錯誤資料,導致該錶的元資料出現混亂,即使是hive的內部表,drop掉表後,重新上傳檔案到hive的相同表名,使用hive查詢沒問題,一旦使用impala查詢依舊有莫...
一條sql 語句的優化
第二個版本 一條sql搞定,使用巢狀查詢,費時2 3分鐘 select a.indexid,c.title,c.createdtime,c.intro,d.picurl,e.src,e.size,e.info from mms content index a,mms index node b,mms...