惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - gyhanonline

Function Point in Vbscript - gyhanonline Window API in QTP Simulate click event using widows API. Static Constructor A Go Set program A Go Set program About Inherit Code for Inter-process communicate Integrity Level Test for publish blog by word 2007 托管为什么安全 The usage of intellisense in Vs .net 2005 关于singlton的一些问题 - gyhanonline 我的面试(六) - gyhanonline 我的面试(五) - gyhanonline 我的面试(四)补充1 我的面试(四) 我的面试(三) 我的面试(二)
我的面试(七)
gyhanonline · 2007-11-02 · via 博客园 - gyhanonline

    昨天参加了公司推荐的onsite第二轮面试,考官出了一道题,没答出最优的方法。今天试了试感觉效率还是很重要的。笨方法和较优方法间的差距在10,000级有1s多到了100,000级竟然有81.296s这样大的差距。真是不敢想象。看来以后真的要多注意效率问题。
   不注意效率的笨方法对于系统来说真是毁灭!
   考题奉上:
两组有序数列,请计算他们不共有数据的个数,例如:
input1:1 1 2 2 3 3 5 6 6
input2:0 1 3 3 3 4
output:5(即0 2 4 5 6一共5个)
两种方法:
1

        static  public int GetSameUniqueNumberCount(List<int> sourceList1,List<int> sourceList2)
        
{
            
int i = 0
            
int j = 0;
            List
<int> resultList = new List<int>();
            
while (i < sourceList1.Count || j < sourceList2.Count)
            
{
                
if (i >= sourceList1.Count)
                
{
                    
if (!resultList.Contains(sourceList2[j])) resultList.Add(sourceList2[j]);
                    j
++;
                }

                
else if (j >= sourceList2.Count)
                
{
                    
if (!resultList.Contains(sourceList1[i])) resultList.Add(sourceList1[i]);
                    i
++;
                }

                
else if (sourceList1[i] < sourceList2[j])
                
{
                    
if (!resultList.Contains(sourceList1[i])) resultList.Add(sourceList1[i]);
                    i
++;
                }
                
                
else if (sourceList1[i] == sourceList2[j])
                
{
                        
while (i < sourceList1.Count - 1)
                        
{
                            
if (sourceList1[i] != sourceList1[++i]) break;
                        }

                        
while (j < sourceList2.Count - 1)
                        
{
                            
if (sourceList2[j] != sourceList2[++j]) break;
                        }

                        
if (i == sourceList1.Count - 1) i++;
                        
if (j == sourceList2.Count - 1) j++;
                }

                
else if (sourceList1[i] > sourceList2[j] )
                
{
                    
if (!resultList.Contains(sourceList2[j])) resultList.Add(sourceList2[j]);
                    j
++;
                }

            }

            
return resultList.Count;
        }

这个方法比较快
2.

        static public int GetSameUniqueNumberCount2(List<int> sourceList1, List<int> sourceList2)
        
{
            List
<int> resultList = new List<int>();
            
for (int i = 0; i < sourceList1.Count; i++)
            
{
                
if (!sourceList2.Contains(sourceList1[i]) &&!resultList.Contains(sourceList1[i]))
                
{
                    resultList.Add(sourceList1[i]);
                }

            }

            
for (int j = 0; j < sourceList2.Count; j++)
            
{
                
if (!sourceList1.Contains(sourceList2[j]) && !resultList.Contains(sourceList2[j]))
                
{
                    resultList.Add(sourceList2[j]);
                }

            }

            
return resultList.Count;
        }

这是最直白的方法,也是给系统带来毁灭的方法100,000级就已经有明显的用户体验下降的感觉了再高一级就肯定认为是死机啦

下边是所有的代码(包括100,000的测试用例)