題號 771(簡單題)
描述:查詢s字串中每乙個元素是否在j**現,並求和
思路:string find 函式 或者 hash結構
int count = 0;
int a[150] = ;
for(auto i:j)
for(auto i:s)
}/*for(auto i:s)
}*/return count;
題號1104(中等題)
描述:一條龍二叉樹尋路問題
方法一:需要注意的點,由於是一條龍的順序,所以不能直接進行除以二的操作以查詢父節點,需要進行轉換
轉換的方法是,t = a + b -x a = 2^level-1 b = 2^(level-1) x為元素值 t為父節點
int level = (log(label) / log(2)) + 1;//4
int a;
vectorpath(level);
path[level-1] = label;//p[3]=14
level = level-1;//3
while(level!=0)
else
level--;
label=a;
}path[0] = 1;
return path;
方法二:位運算
因為以1為根節點層次編號的滿二叉樹可以對應到位的表示,所以用位運算的思路即可。
因為每層的順序在變,所以每次需要對首位外的其它位取反。
舉例14=1110b,
先將14右移,變為111b,然後對除第一位外所有位取反變為100b,即它的根節點4,
同理100b,右移變為10b,對除第一位外所有位取反變為11b,即它的根節點3
一直到1結束。
**後期補上
題號 1122(簡單題)
描述:給你兩個陣列,arr1 和 arr2,
arr2 中的元素各不相同
arr2 中的每個元素都出現在 arr1 中
對 arr1 中的元素進行排序,使 arr1 中項的相對順序和 arr2 中的相對順序相同。未在 arr2 **現過的元素需要按照公升序放在 arr1 的末尾。
思路一:最弱智的想法,時間複雜度o(n*m),對兩個vector進行掃瞄,然後看是否在arr2**現,如果出現的話,放入vector res中,最後把沒出現過的同意放到末尾處,未出現的元素要求公升序
思路二:類似於771的hash思路,以空間換時間
vectorpos(1001);
for(auto i:arr1) ++pos[i];
for(auto i:arr2) pos[i] *= -1;
int cur=0;
for(int i=0;i0)
}return arr1;
題號:1105(中等)
描述:動態規劃,記住已解出的子問題的最優解
思路:
力扣部分刷題記錄
1.兩數之和 思路 暴力遍歷 class solution vectorres return res 2.兩數相加 思路 遍歷鍊錶 definition for singly linked list.struct listnode class solution if c return res nex...
力扣解題思路 打家劫舍
思路 題目 你是乙個專業的小偷,計畫偷竊沿街的房屋,每間房內都藏有一定的現金。這個地方所有的房屋都圍成一圈,這意味著第乙個房屋和最後乙個房屋是緊挨著的。同時,相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在...
力扣解題思路 素數
首先,如何判斷乙個數是否為素數呢,首先我們知道最小的素數是2,那麼我們從2開始判斷該數是否能找到被除數即可,完整 如下 public boolean isprimenum int i return true 思路 統計所有小於非負整數 n 的質數的數量。那麼這一題我們需要對每個小於n的數進行判斷一次...