1. 程式人生 > >python面試題,通過交換a,b中的元素,使[序列a和]與[序列b和]之間的差最小

python面試題,通過交換a,b中的元素,使[序列a和]與[序列b和]之間的差最小

    sumb = sum(lstb)
    d = abs(suma-sumb)
    if d == 0:
        return d
    
    bExchange = False    
    for indexa, ia in enumerate(lsta):
        if d == 0:
            break
        for indexb, ib in enumerate(lstb):
            tempd = abs((suma-ia+ib)-(sumb+ia-ib))
            if tempd < d:
                bExchange = True
                tempindexa = indexa
                tempindexb = indexb
                d = tempd

        if bExchange:
            suma = suma - lsta[tempindexa] + lstb[tempindexb]
            sumb = sumb - lstb[tempindexb] + lsta[tempindexa]
            tempv = lsta[tempindexa]
            lsta[tempindexa] = lstb[tempindexb]
            lstb[tempindexb] = tempv
            bExchange = False
        
    return d
lsta = []

lstb = []
for i in range(1000):
    lsta.append(random.randint(0, 1000000))
for i in range(1000):
    lstb.append(random.randint(0, 1000000))

print exchange(lsta,lstb)

lsta = []
lstb = []
for i in range(10000):
    lsta.append(random.randint(0, 1000000))
for i in range(10000):
    lstb.append(random.randint(0, 1000000))

print exchange(lsta,lstb)
=======================================================
分別測試一千個數和一萬個數的結果,一萬個數時耗時真多。
>>> 
used time: 0.223763605341
3
used time: 46.6022585932
1
>>> 

相關推薦

[筆試題]Fibonacci數給定目標數之間步數

來源:牛客網點選進入 題目描述 Fibonacci數列是這樣定義的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci數列就形如:0, 1, 1, 2,

python試題通過交換a,b元素使[序列a][序列b]之間

    sumb = sum(lstb)     d = abs(suma-sumb)     if d == 0:         return d          bExchange = False         for indexa, ia in enumerate(lsta):         i

Python 經典試題: a,b兩個序列,大小都為n,序列元素的值任意整形數,無序, 要求: 通過交換a,b元素,使[序列a元素][序列b元素]之間 使

方法: 用隨機數來求出結果 解題思想: 用隨機數隨機出來所有的程式碼排列可能性,在定義次數的時候 定義的次數越大得到的結果越準確. 最終程式碼: import random #有很多方法是把兩個列表合成一個後排序按照一大一小的分配生成兩個列表 #但是這樣是在資

華為試題(8分鐘寫出程式碼) 有兩個陣列a,b大小都為n,陣列元素的值任意無序; 要求:通過交換a,b元素使陣列a元素陣列b元素之間

先上程式碼 java程式碼: public class MinDiff { public static void main(String[] args){ int[] aa={2,5,4,3,1,0}; int[] bb={7,9,8,10,6,11}

[微軟]有兩個序列a,b大小都為n,序列元素的值任意整數無序; 要求:通過交換a,b元素使[序列a元素][序列b元素]之間_利用排列組合思路解決_python版

+= 求和 ever tro 解決 turn 運行 main lis (原題出自微軟公司面試題)問題如下:有兩個序列a,b,大小都為n,序列元素的值任意整數,無序;要求:通過交換a,b中的元素,使[序列a元素的和]與[序列b元素的和]之間的差最小。例如:a=[100,99,

有兩個序列a,b大小都為n,序列元素的值任意整形數無序; 要求:通過交換a,b元素使[序列a元素][序列b元素]之間

整體思想是利用兩個列表和的差值絕對值大小判斷是否互動兩個列表的值#!/usr/bin/env python# coding=utf-8def abs_test(a,b):    # 假設剛開始就是差值最小的    # 此時的差值絕對值為:    min = abs(sum(a

一道Python試題:給出d = [True, False, True, False, True]請利用列表d只用一句話返回列表[0,2,4]

分享 忽略 class pytho 面試題 inf pos 如何 返回   前言:還是我,一個不知死活的小白,冒著生命危險去了一家有逼格的公司面試,去面試的路上就經歷了一番波折,公交車死等不來,最後差點誤了面試時間,這都不算什麽了,雖然對面試不抱什麽希望,但在技術面被虐成了

110道python試題你會幾個?

最近公眾號新來了不少朋友,這幾天不少讀者朋友後臺留言問我有沒有python面試題,今天統一給大家分享一遍,希望能幫助準備找工作和仍在找工作的同學,儘快找到工作,該文110道面試題大部分題目屬於鞏固基本python知識點的題目,希望對基本知識不熟悉的同學,能認真做一遍,肯定會有不少收穫。 內

python字串試題:找出一個字串第一個字母最後一個字元是第一次重複中間沒有重複且長的子串

1.給出任意一個字串,列印一個最長子串字串及其長度,如果有相同長度的子字串,都要一起打印出來,該子字串滿足以下條件, 第一個字母和最後一個字元是第一次重複 這個子字串的中間字母沒有重複 這個子字串是滿足條件裡面的最長的 如: adsasadmasd 中滿足條件的是dmasd   im

Python|一道神奇的Python試題你會嗎?

  小編無意間,看到這麼一道Python面試題:以下程式碼將輸出什麼? 更多Python視訊、原始碼、資料加群960410445免費獲取   腦中默默一想,這還用說麼,肯定是:   最後一看答案,竟然是:

機緣巧合從華為弄來的40道python試題考的竟然都是基礎知識!

  1.Python所遵循的程式碼規範是什麼? PEP8規範 2.將字串"k:1|k1:2|k2:3|k3:4",處理成Python字典:{‘k’:1, ‘k1’:2, ... } a)答案1     s = "k:1|k1:

在 GitHub 上收穫 6519 顆 Star 的 Python 試題資源到底有多牛?

整理 | Jane出品 | AI科技大本營編輯 | AI深入淺出最近身邊很多小夥伴都是在筆試、面

Python試題:寫一段程式碼功能是將本段程式碼打印出來

前幾日,遇到這麼一道面試題,記錄下來 思路分析: 首先需要獲取檔案路徑,可以使用sys.argv[0],它是命令列引數List,第一個元素是程式本身路徑(更多sys模組的常用方法見https://blog.csdn.net/qq_38276669/article/details/8368

這篇文章沒白看這些python試題這些都讓我成長了!

  前言 之所以在這裡寫下python爬蟲常見面試題及解答,一是用作筆記,方便日後回憶;二是給自己一個和大家交流的機會,互相學習、進步,希望不正之處大家能給予指正;三是我也是網際網路寒潮下崗的那批人之一,為了找工作而做準備。 一、題目部分  

一道試題通過waitnotify的兩個執行緒互動輸出thread1-1...thread1-5thread2-6...thread2-10...

這是一道關於多執行緒的面試題,好久沒有做過這種多執行緒的題了,手有點生,那麼就來敲一敲 package threadDemo; /* * 多執行緒的交叉列印 */ public class

python試題求兩個List各個元素相減絕對值是多少

春暖花開,人心浮動,吾思當左遷之,一則工資上漲,二則環境變好。奈何世道不然,吹牛空談者大受歡迎,而吾實事求是者則落寞如此,知之為知之,不知為不知。 投遞無數,才得一二,某國有電信公司邀請面試,始記得吾曾於去年三月去過,現復一年又至三月,碰運氣吧! 約至午後兩點,前臺等候,看

Python試題拿offer必知必會(基礎部分)

概念性問題 python2和python3區別 字元編碼: py3中預設字元編碼是unicode;py2中預設字元編碼是 ASCII,如果檔案中出現了中文,需要在頂部加入coding宣告#coding:utf8 讓使用者輸入:py3中直接使用input

一道神奇的Python試題你會嗎?

開發十年,就只剩下這套架構體系了! >>>   

學習Python一年基礎忘記了看看試題回憶回議Python試題No3

這邊有幾個面試題,好棒 第1題:你如何管理不同版本的程式碼? git,svn兩個都要說到,github,碼雲也要提及,面試官想要的就是版本管理工具,你只要選擇一個你熟悉的,瘋狂的說一通就可以了,最好說一下自己以前做過哪些開源的專案,放在上面,沒有,就另當別論了。 第2題:python中生成隨機整數、隨機小數、

昨天去面試這5個Python試題都被考到了Python試題No6

第1題:字串的拼接–如何高效的拼接兩個字串? 字串拼接的幾種方法 加號 逗號 直接連線 格式化 join 多行字串拼接() 加號 print('Python' + 'Plus') 逗號 print("Hello", "Python"