From b22169d66e6cacb4fadafd76843de7fc393ea911 Mon Sep 17 00:00:00 2001 From: 1AoB <2453468739@qq.com> Date: Sat, 27 Apr 2024 01:54:48 +0800 Subject: [PATCH] c++ --- .../content/post/给个offer/index.zh-cn.md | 182 ++++++++++++------ .../post/给个offer/图片/1714141505536.png | Bin 0 -> 4995 bytes 2 files changed, 127 insertions(+), 55 deletions(-) create mode 100644 exampleSite/content/post/给个offer/图片/1714141505536.png diff --git a/exampleSite/content/post/给个offer/index.zh-cn.md b/exampleSite/content/post/给个offer/index.zh-cn.md index 1af3854..b672968 100644 --- a/exampleSite/content/post/给个offer/index.zh-cn.md +++ b/exampleSite/content/post/给个offer/index.zh-cn.md @@ -17,6 +17,8 @@ This article offers a sample of basic Markdown. # 正文开始 +如果考到数论的题,会做你就做,不会做你就说你对数论这块不太熟悉,数论这个面算法工程师考的比较多,做开发的话链表比较多 + ## 1.41. 包含min函数的栈 ```cpp @@ -799,24 +801,146 @@ public: -## 28.67.数字在排序数组中出现的次数 +## ## 29.37. 树的子结构 +```cpp +以根为开始,开始进行p1与p2的匹配: +需要另写一个函数进行匹配,函数的参数是以p1,p2为根节点的一段小树 +函数内部实现: +1.p2为空.说明之前的匹配好了,直接return true; +2.p1为空 或者 p1和p2的值不匹配,直接return false; +3.没有被条件1和2直接return,说明当前的节点是匹配的,我们接着 +匹配左左和右右,是且的关系 +class Solution { +public: + bool dfs(TreeNode* p1, TreeNode* p2) + { + if(!p2)return true; + if(!p1 || p1->val != p2->val)return false; + //此时,当前节点是匹配的 + return dfs(p1->left,p2->left) && dfs(p1->right,p2->right);//左边匹配且右边匹配 + } + bool hasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { + if(!pRoot1 || !pRoot2)return false; + if(dfs(pRoot1,pRoot2))return true;//遍历当前节点 + return hasSubtree(pRoot1->left,pRoot2) || hasSubtree(pRoot1->right,pRoot2);//下一个节点 + } +}; +``` + + + ## 30.46. 二叉搜索树的后序遍历序列 +```cpp +//和那个重建二叉树思路有一点点类似 +//画图确定范围 +class Solution { +public: +//1.搞一个全局变量 + vector seq; + + bool verifySequenceOfBST(vector sequence) { + seq = sequence; + return dfs(0, seq.size() - 1);//dfs的是范围 + } + + //dfs的是范围 + bool dfs(int l, int r) { + if (l >= r) return true; // 1.如果子序列为空或只有一个节点,它必然是BST的后序遍历结果 + int root = seq[r]; // 2.根节点 子序列的最后一个节点是当前子树的根节点 + int k = l;//左右子树的分界线(找到右子树的第一个元素) + while (k < r && seq[k] < root) k++; // 找到左子树和右子树的分界点 + for (int i = k; i < r; i++)//遍历右子树,如果右子树中,有元素小于根节点就不满足二叉搜索树 + if (seq[i] < root) + return false; // 如果在右子树中找到比根节点小的值,则不是合法的BST后序遍历 + return dfs(l, k - 1) && dfs(k, r - 1); // 递归检查左子树和右子树 + } +}; + +``` + +![1714141505536](图片/1714141505536.png) + ## 31.26. 二进制中1的个数 +```cpp +//记住就好, x与-x的与 +int lowbit(int x){ + return x&(-x); +}//可以得到最后一个1 +``` + + + ## 32. 49. 二叉搜索树与双向链表 -## 33.62. 丑数 + + + + + ## 34.32. 调整数组顺序使奇数位于偶数前面 + +```cpp +维护两个指针,一个从头一个从尾 +使得:前指针前面都是奇数,后指针都是偶数 + +前指针遇到偶数就停下来,遇到奇数就前进 +后指针遇到奇数就停下来,遇到偶数就前进 + +如何前指针的下标和后指针的下标不同,就交换两个数 +while(i < j) +{ + while() + while() +} +class Solution { +public: + void reOrderArray(vector &array) { + int i = 0 ,j =array.size()-1; + while(i < j) + { + while(i)zrVvF4WrQ@0mXoQ}wAhN%Az8{YX&afy(jb+gvb7N> zqM~D%G-{NT8cSh}eHvs-y!Yc&XZf7>{r&O&^}c`2eD3FZuIsw5>w7KVCx-0eATOgK z0|1bBawKjBKw={RsLRrl@IGL5d&!ZnIY%Tb$!#7%#+bVR)ijb7&00F$N!U} zJ|1q${)^BLkt_OmP?&DYr>R*c$W^Y8nF42{b^QPNTC^vHjpko)FbZQK2u5Y=4Fj1IM7>Q=vpOb$coF&2y^5#fCYAYmUWhpW`9h7@GWTOr-@Nfc8Sk$&_TUs#0nJ0Fwd_ zKGX*K2(1@8vrR}QZux1xI8Yh6%lW0`-_keIyzi@ZWqs(W6RWX*$!Ok&nrcv9bbTHT zIkw0nI2U4UAqH%D@@ovvOtr~}re9oBOfqO>pGC|$8=&N9wX$F<{PQU*wonhf_wuc} zO#k&*8ol6vI$&aNXp}aA_XWJp>M&WbTWKTEU6KesgsjI>*+d+;rJuaCD@($sA)6~Y zm-XvoG|lYcp)W8IOj|U~29YjIHC?6R)Th5wN1kRq4<6KyDChMUNYL`JH)JR;&_QlW z!fdOxfh#a9(J5SIC1G`t`?R;xj0;f5mAB5KG*5@wg7WBihymqLqr`sQIiM+nj8>nw z1rKu1kn?G>N-SB`r0YjThG?*QNivXxMX=q>|6JBQ5-8B+pOlcR(_u18qx;M z#pr>WjsIS8n`QkmSX*`}$=E1P3WQICvXhDTyEe;OA^GkVoL2*L{ljJ>XT8`dp`-H6XEojOrvWEuh~hnXYe2bWcLXo7_VkW`Brod> zPWWJ*L_rL!j7oCp5lgS(RF{n1Q9WXPFGWT1Jl6)_hm(UH{^1WwBd4c34_UQjEU-ZB zOcM@2bB*6~M^|Uxka48VSaW1dQlHSIp|fvGbB5(GczDCWSZv9DY)1X&k*lBn~>-uRpg^@)T}skMLf3?c2ivpG~57AMXEEg(KL; zmBOZ*ka{2YysI59af-?>V>$YWk2L!H-jn9}V>`*>Qz4SVup=kWL@$Ko+RmC{l-=Nif3sXuI zb8_}{ENZ|@+TxEkj}YP>PtoJs*7ix0)iNwb!_+lsg=O^nl z@5*04Tbl0D5i!}@Vb{XJ95)Z2=Ja#+6Ez*!rYm^AbZA?%b6mMIhawq#L$!dl>Fl1d z!@nq#Ei*C4(>SKBoSehL0L@_){s}`5mQ{0g&}8`U6<-5!Z;R-3r|^ifu~wzv&C2$~ ztz&_d1XIkS_PZC$TU%t8YPIlr` z)TF1cN)7i_Z2I_@Zhaju@sx~Uk$AjU{#m^ETCLrI5u|qxEO1^g>(e@Pj=?vNq0@Qd zfoZF``!u|(opy0Jp;6&e$9g>2JbLuxyU%l}Ab-~xsru^^9rur9EfV`2x6*)^HJVqx ziMc6>7W}+puuI7B306GopdkLr&&g;j8i@d{c*I$Zs-;qp?-ZfCRdxTLDSjEV_$ z@wj@tqWJAZm?nEKdyLLER8Vvs{uC+S>(!%GS?O0M=SoKTr?<6C9qaN5)X2$6O5GG0 zG4u7y+0xR|nDPwKLIyv!^r{D^y0$IAcS36wY@nc+sxh;cIMth_Am%kjG`B^?H&mz0 zwP7E?1spLu-}BDx@-El*k-o9erH@Wtm_%HgY}i_BiuK`74XuuxqK}7KP-g6;qN;_d z)&1@G$86#FbkL&h!itKm^LrP=_IuES5QAq$G?d0Fh(#4+0iSt7_l%8F0n?)4a9>qX zhr9O6#c-I}R>gHpOP zyBDYsye;_`L$usgIDGv$uPkW^M%&P|=g_YcCL}a%V0PrfN`dpO>2>Cvp2QmwMhmlF zGfu?dDxbbqG}Xb@RC`}FHge04QIf9Ld*K8Mw3Of|U5qMw5hep#VY_ci7phQqg?G)D za2A2wQ?g6I88$Iba)m1G&XKEVT1gt5(e~1CPe_URw!!6|Z}|+mmqGES^u=hZ51d?0 z+(7*Dt2_dCNbpuihGxCe4NX1FUC@;5Ie~NFR!GvUjor|!;8=GY35=X3qp9BZZnq+| ze$TH>#43RZZK$C(-*M@=eF78b*gfe4RJ|G;{kLz&UKfxwhsJbvA0A!I1l=n$F_kr{ zO4p7iBu9OH)293F=x3&`kB9m4sHm1UZ6?bm+-1Hl6x{G;&dZE!hu93t=cz>Z=t2I0 zjdFHyD;mFMv%G}Q9vXJy?oo2CCrxxoGR~9HA4uDXo2QFz()GHTg6EX*)w4==kT5Uv z$Cjg7E|?uWVGQ@Bsjk~3jo|Y+0vkAQyDgxdjeWcIcQ)F!9G;Wl9z81HeaR=vF{59gm?Rd^F!g@sh+kpq~tjFv2juF z8Y$;btc4M!VQ3Pvj=d_8)#j}M^{SZ|TfJUJ+BW{FvE`Gjo8ecfzs)Yae!m~U()1y| z54t%tmG;ToZXrC9V5u^PLA^J;%6ph5>kKz{XndAH&^A7>l&_ozNyS0!RM2e#)!tCG zYzec*(yWnQ^Cz>oSkyU}_86Y^`-^wI8WL6GKm@Y&G`Ull6)l=4w2>7Y5vLk*x&4F^ z3911SCJKS0xCxA0`A$$Qi^{cto!+-~sj}5iMXs{`JEtN4#3P`LFwoB{O;1rY?Z104 zOM`M5-b|n_^L>|IeLuADmX-*pLqz?P9MK*TuI@zBw7)YXsyDa1?cE%O*^_<}9%Y0i z_X-vd&cN-iK*cb94pk2N{GaHSU)}u=fPqxwvVB;ZG29ye5~lz3@;^nJcFfYB`mB2d zzBMNIN1XntXNTv0X;9XU(2Gj*<>=Z$3J6Ldqges=Zqj&Q@%)t~(9lZ+-LO(@_Y+}m zklwI^!rbZqJ6ZX(Bbv3{>KexOHU>U9kcF}JM?_#2a*;mN?--Tupvl#y&g8KZ>R*5FbCviknJp*ZO)M4k}bFBfk|ko zUb+x7AbxieY1$Ll(BC8onMd02wR2GMb~X->AR_v2z0eX( zkBC%Yqij7{Lx#G8U;T_neaRc%VCSZ6C|Y+Y*74fX*>2QSogceaEIB|S;*j3KD%q91 z&MdXvh{%Nesi0^Dp=4**{0;dCL2il>1k0t}2!Ra2)3{L4NiGc;E(`kJZ!X_PsJJEr z`6%^3FcvFv*yjh63Otjcdv}%;gWMG8*Kz&-RlWZkOZKby~ literal 0 HcmV?d00001