zoukankan      html  css  js  c++  java
  • 巧妙变换

    题目分析来自“待字闺中”微博公众平台。

    一个数组,arr = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'],变换为:arr = ['a1', 'b1', 'a2', 'b2', 'a3', 'b3', 'a4', 'b4']

    第一次使用Python编写程序,肯定有许多不妥的地方。

    第一种方法:

    __author__ = 'ledao'
    
    arr = ['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4']
    
    length = len(arr)
    halfLen = length/2
    counter = halfLen-1
    
    for i in xrange(halfLen, length-1):
    
        local_counter = counter
        counter -= 1
        if -1 == counter:
            break
        local_index = i
        while local_counter > 0:
            val = arr[local_index]
            arr[local_index] = arr[local_index-1]
            arr[local_index-1] = val
            local_index -= 1
            local_counter -= 1
    
    print arr
    

     第二种方法:

    __author__ = 'ledao'
    
    arr = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
    
    length = len(arr)
    halflen = length/2
    
    for i in xrange(1, halflen):
        for j in xrange(0, i):
            local_val = arr[halflen+i-1-2*j]
            arr[halflen+i-1-2*j] = arr[halflen+i-1-2*j-1]
            arr[halflen+i-1-2*j-1] = local_val
    
    print arr
    

     第三种方法:

    __author__ = 'ledao'
    
    arr = ['a1', 'a2', 'a3', 'a4', 'a5', 'b1', 'b2', 'b3', 'b4', 'b5']
    
    def finalIndex(old_index, halflen):
        return (2*old_index)%(2*halflen-1)
    
    length = len(arr)
    modified = ['False']*length
    
    for i in xrange(0,length-1):
        if modified[i] == 'False':
            firstIndex = i
            stored_val = arr[firstIndex]
            while True:
                local_value = stored_val
                if modified[firstIndex] == 'False':
                    modified[firstIndex] = 'True'
                else:
                    break;
                local_finalIndex = finalIndex(firstIndex, length/2)
                stored_val = arr[local_finalIndex]
                arr[local_finalIndex] = local_value
                firstIndex = local_finalIndex
    
    print arr
    

     第四种方法由于水平有限,没看懂……T-T,讲解连接如下,请教高手!

    http://www.newsmth.net/bbscon.php?bid=1032&id=47005

  • 相关阅读:
    LeetCode Missing Number (简单题)
    LeetCode Valid Anagram (简单题)
    LeetCode Single Number III (xor)
    LeetCode Best Time to Buy and Sell Stock II (简单题)
    LeetCode Move Zeroes (简单题)
    LeetCode Add Digits (规律题)
    DependencyProperty深入浅出
    SQL Server存储机制二
    WPF自定义RoutedEvent事件示例代码
    ViewModel命令ICommand对象定义
  • 原文地址:https://www.cnblogs.com/ledao/p/3620450.html
Copyright © 2011-2022 走看看