找到兩個鍊錶的第乙個共同節點位置
例如:a1 -> a2 -> c1->c2 ->c3; //鍊錶1
b1->c1->c2->c3; //鍊錶2
左移基本思想是:yx = (xt y t)t
故而,左移n位等同於:
將前n位位置交換(第一位和第n位交換),再將(n+1)位到最後一位的位置交換,最好從同到尾交換元素位置;
for
(int i=
0,j=n-
1;i++i,
--j)
swap
(str[i]
,str[j]);
for(
int i=n,j=len-
1;i++i,
--j)
swap
(str[i]
,str[j]);
for(
int i=
0,j=len-
1;i++i,
--j)
swap
(str[i]
,str[j]
);
同理,右移n位:(總長len)
將字串中的字元從空格中分離
關鍵在於需要兩個變數,乙個進行移動,乙個進行標記;
如:i am a student.
|i,m
移動i,直到遇到空格;
此時(i-1)和m之間就是字元;
string reversesentence
(string str)
} str=str.
substr(0
,len)
;//不取新增在最後的空格
for(
int j=len-
1,i=
0;i++i,
--j)
swap
(str[i]
,str[j]);
return str;
}void
reverse
(string &str,
int i,
int m)
}
找到出現一次的字母,找到出現2次的字母,找到出現n次的字母:
基本思想:利用乙個陣列來記錄各個元素出現了多少次,並按照要求輸出;
// 已知vector為a;
int c[
256]=;
for(
int i=
0;isize()
;++i)
for(
int i=
0;isize()
;++i)
5.鍊錶中的環:
先說個定理:兩個指標乙個fast、乙個slow同時從乙個鍊錶的頭部出發;
fast一次走2步,slow一次走一步,如果該鍊錶有環,兩個指標必然在環內相遇
此時只需要把其中的乙個指標重新指向鍊錶頭部,另乙個不變(還在環內),
這次兩個指標一次走一步,相遇的地方就是入口節點。
若要找這個環的長度,只需要將保持fast和slow的步長不變,當二者再次相遇的時候,slow走的總步數就是環的長度。
/*
struct listnode
};*/
class
solution
listnode* meetingnode =
meetingnode
(phead);if
(meetingnode ==
null
) listnode* pnode1 = meetingnode;
// 兩個指標同時移動,找到環入口
listnode* pnode2 = phead;
while
(pnode1 != pnode2)
return pnode1;
}private
:// 使用快慢指標,找到任意的乙個環中結點
listnode*
meetingnode
(listnode* phead)
listnode* pfast = pslow-
>next;
while
(pfast !=
null
&& pslow !=
null
) pslow = pslow-
>next;
pfast = pfast-
>next;
if(pfast !=
null)}
return
null;}
};
牛客網 前端程式設計題小結
牛客網 前端程式設計題小結 雖然是最最基礎的js題,但是還是收穫不少,大家都很聰明啊!concat slice map 不改變原陣列 1.找出元素 item 在給定陣列 arr 中的位置 如果陣列中存在 item,則返回元素在陣列中的位置,否則返回 1 最基礎版本 function indexof ...
daemon程式設計小結
一.daemon的特點 必須由root啟動。它是非互動式程式,所以沒有控制中斷,無須使用者輸入。不能控制終端,所以無任何輸出,因此無論是向stderr還是stdout都需做特別處理。通常作為程序組和會話的領導程序。父程序是init,因為真正的父程序fork以後就exit了,是由init繼承的孤兒程序...
Linux Module程式設計小結
1.makefile 使用makefile來編譯模組,不能直接使用gcc。實際使用的是當前活動核心模組的makefile來完成相關工作的。ifneq kernelrelease obj m hello.o calculate.o else kdir lib modules 2.6.18 53.el5...