1.赋值运算符函数
CMyString& CMyString::operator=(const CMyString &str)
{
if (this != &str)
{
CMyString strTemp(str);
char *pTemp = strTemp.m_pData;
strTemp.m_pData = str.m_pData;
m_pData = pTemp;
}
return *this;
}
6.用两个栈实现队列
class Queue
{
public:
void push(int val)
{
push_st.push(val);
}
int pop()
{
int pop_val = -1;
if (!pop_st.empty())
{
pop_val = pop_st.top();
pop_st.pop();
}
else
{
if (!push_st.empty())
{
while (push_st.size() != 1)
{
pop_st.push(push_st.top());
push_st.pop();
}
pop_val = push_st.top();
push_st.pop();
}
}
return pop_val;
}
private:
stack<int> push_st;
stack<int> pop_st;
};
7.旋转数组中最小的数字
int minNumberInRotateArray(const vector<int> &rotateArray)
{
if (rotateArray.empty())
{
exit(1);
}
int left = 0, right = rotateArray.size()-1, mid = 0;
while (left < right)
{
mid = left + (right-left >> 1);
if (rotateArray[mid] < rotateArray[right])
{
right = mid;
}
else if (rotateArray[mid] > rotateArray[right])
{
left = mid+1;
}
else
{
--right;
}
}
return rotateArray[left];
}
15.二进制中1的个数
int NumberOf1(int n)
{
int cnt = 0;
while (n != 0)
{
++cnt;
n &= n-1;
}
return cnt;
}
18.删除链表的节点
void DeleteNode(ListNode *pHead, ListNode *pToBeDeleted)
{
if (pHead == nullptr || pToBeDeleted == nullptr)
{
return ;
}
if (pToBeDeleted->next == nullptr)
{
if (pHead == pToBeDeleted)
{
delete pToBeDeleted;
pHead = nullptr;
}
else
{
ListNode *pNode = pHead;
while (pNode->next != pToBeDeleted