鏈家筆試演算法題
阿新 • • 發佈:2019-01-01
1 給定一個數組,將奇數排在偶數前面
思路:類似於快排的思想
#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
void exchange(int a[], int n)
{
int low = 0, high = n-1;
while(low < high)
{
while(low < high && a[low] % 2 == 1) low++;
while(low < high && a[high] % 2 == 0) high--;
swap(a[low],a[high]);
}
}
2 刪除有序連結串列中的重複元素
程式碼如下:
#include<iostream>
#include<stdio.h>
#include<memory.h>
using namespace std;
struct LinkList
{
int val;
LinkList * next;
LinkList(int v):val(v) {}
};
void removeDup(LinkList * head)
{
LinkList *pre, * cur;
if (head == nullptr) return ;
pre = head; cur = pre->next;
while(cur)
{
if(cur->val == pre->val)
{
cur = cur->next;
pre->next = cur;
}
else
{
pre = cur;
cur = cur->next;
}
}
}
//測試
int main()
{
int a[] = {1,1,2,3,3,4};
LinkList *head = nullptr, *p = nullptr;
for(int i = 0; i < 6; i++)
{
if(head == nullptr)
{
head = p= new LinkList(a[i]);
p->next = nullptr;
}
else
{
p->next = new LinkList(a[i]);
p = p->next;
p->next = nullptr;
}
}
p = head;
while(p)
{
cout<<p->val<<" ";
p = p->next;
}
cout<<endl;
removeDup(head);
p = head;
while(p)
{
cout<<p->val<<" ";
p = p->next;
}
return 0;
}
3 大數乘法
4 編輯距離