牛客網劍指offer刷題記錄(更新ing)

2021-09-12 09:13:38 字數 3642 閱讀 8119

1.二維陣列的查詢

class solution 

else

else

//索引-1

index_new--;

index--;

}}};

3.從尾到頭列印鍊錶

/**

* struct listnode

* };

*/class solution

while(array_tmp.size()>0)

return array_result;

}};

4.重建二叉樹

/**

* definition for binary tree

* struct treenode

* };

*/class solution

if(vec_right_length>0)//如果右子樹不為空則新增右子樹

return tree;

}};

5.兩個棧實現佇列

class solution

int pop()

int value=stack2.top();

stack2.pop();

while(stack2.size()>0)

return value;

}

private:

stackstack1;

stackstack2;

};

6.旋轉陣列的最小數字

class solution         

return arr[n];

}};

8.跳台階

class solution 

return methodstofloor[number];

}};

9.**跳台階

class solution 

return arr[number];

}};

11.二進位制中1的個數

在這裡插入**片
12.數值的整數次方

class solution 

if(exponent==0)

return 1;

if(exponent==1)

return base;

if(exponent%2==0)

return power(base,exponent/2)*power(base,exponent/2);

else

return power(base,exponent/2)*power(base,exponent/2)*base;

}};

13.調整陣列順序使奇數字於偶數前面

class solution 

while(odd.size()>0)

while(even.size()>0)

}};

14.鍊錶中倒數第k個節點

/*

struct listnode

};*/

class solution

if(nnext;

}return pcur;

}};

15.反轉鍊錶

/*

struct listnode

};*/

class solution

return tmp->next;

}};

16.反轉鍊錶

/*

struct listnode

};*/

class solution

return tmp->next;

}};

17.合併兩個排序的鍊錶

/*

struct listnode

};*/

class solution

else

return head;

}};

18.樹的子結構

/*

struct treenode

};*/

class solution

if(proot1==null && proot2!=null)

if(proot1->val!=proot2->val)

if(proot2->left==null&&proot2->right==null)

if(proot2->left==null&&proot2->right!=null)

if(proot2->left!=null&&proot2->right==null)

//當b的根與a的根相同,且b左右子樹均不為空,則下列任意條件均滿足 b是a的子結構:①如果b的左子樹為a的左子樹的子結構 且b的右子樹為a的右子樹的子結構 ②b是a的左子樹的子結構 ③b是a的右子樹的子結構

return hassubtree(proot1->left,proot2->left)&&hassubtree(proot1->right,proot2->right)||hassubtree(proot1->left,proot2)||hassubtree(proot1->right,proot2);

}};

19.二叉樹的映象

/*

struct treenode

};*/

class solution

mirror(proot->left);

mirror(proot->right);

}};

20.順時針列印矩陣

class solution 

void pop()

int top()

int min() ;

22.棧的壓入、彈出序列

class solution 

};*/

class solution

treenode * tmp;

list.push(root);

while(!list.empty())

if(tmp->right!=null)

list.pop();

}return result;

}};

24.二叉搜尋樹的後序遍歷序列

class solution 

int root=sequence[n-1];

int left_end;

vectorleft,right;

for(int i=0;iroot)

else

else

}};

38.二叉樹的深度

/*

struct treenode

};*/

class solution ;

牛客劍指offer刷題記錄(七)

演算法導論上應該有這樣的課後題。歸併的思路,假設f i,j 表示陣列i到j的逆序對數,那麼有 f i,j f i k f k 1,j s i j,k 其中s i,j,k 表示逆序對 p q p i k q k 1,j 由於歸併排序,我麼得到兩個有序的子陣列l,r 那麼當出現逆序對 l i r j 時...

牛客劍指offer刷題記錄(五)

鍊錶的指標域中,除了有指向下乙個節點的鍊錶以外,還有乙個指向隨機節點的指標。struct listnode 常規做法,空間換時間。先常規的將拷貝的節點用next串起來,遍歷一遍原始鍊錶,然後尾插法即可。在尾插的同時,建立乙個由原始節點指標p到拷貝節點指標c的乙個map。再次遍歷原始指標,如果指標p指...

劍指offer 牛客網錯題記錄 四

題目 在乙個字串 1 字串長度 10000 中找到第乙個只出現一次的字元的位置。異常情況返回 1 這道題借助雜湊表,用空間換取執行時間,事件效率可以達到o n 就是首先遍歷字串,以字元的ascii碼為下標,對應的值為該字元出現的次數。再次遍歷字串,以字元為下標判斷雜湊表對應的值,如果為1則返回該索引...