zoukankan      html  css  js  c++  java
  • LeetCode-7-反转数组-c#

    目前看到的网上的版本

    1. 都是用到数组的反转函数。对于代码实现的细节没给出
    2. 反转函数的想法没给出。

    特在此补充。

    1. Reverse函数是从c#库源码中抠出的主要部分代码。主要是双端步进、交换,当然是o(1)的。
      '''
      public void Rotate2(int[] nums, int k)
      {
      k = k % nums.Length;
      if (nums.Length == 1)
      {
      return;
      }
      int n = nums.Length;
      Reverse(nums, 0, n - k);
      Reverse(nums, n-k,k);
      Reverse(nums,0,n);

           }
      
           public void Reverse(Array array, int index, int length)
           {
               int num = index;
               int num2 = (index + length) - 1;
               object[] objArray = array as object[];
               if (objArray == null)
               {
                   while (num < num2)
                   {
                       object obj3 = array.GetValue(num);
                       array.SetValue(array.GetValue(num2), num);
                       array.SetValue(obj3, num2);
                       num++;
                       num2--;
                   }
               }
               else
               {
                   while (num < num2)
                   {
                       object obj2 = objArray[num];
                       objArray[num] = objArray[num2];
                       objArray[num2] = obj2;
                       num++;
                       num2--;
                   }
               }
      
           }
      

    '''

    1. 为什么反转3次有效?如何想到这个解法?
      有说到这个跟快排的思想接近,目前我还想不明白。挖坑。
  • 相关阅读:
    修改python默认版本
    Ansible基础
    day21
    paramiko上传文件到Linux
    参考书籍
    C++解析三
    块设备
    assert用法
    块设备驱动2
    块设备驱动1
  • 原文地址:https://www.cnblogs.com/facingwaller/p/9573208.html
Copyright © 2011-2022 走看看