首页 > 解决方案 > 两个代码有何不同?,当运行 code1 给出 TLE 错误但第二个不给出 . 基于 0(n) 的解决方案

问题描述

两个代码有何不同?,当运行 code1 给出 TLE 错误但第二个不给出 . 基于 0(n) 的解决方案

代码1

 public static String countSort(String arr)
{
    
   
   int freq[] = new int[26];
   char a[] = new char[arr.length()];
   for(int i=0;i<arr.length();i++)
   {
       freq[arr.charAt(i)-'a']++;
   }
   for(int i=1;i<26;i++)
   freq[i]+=freq[i-1];
   String ans="";
   for(int i=arr.length()-1;i>=0;i--)
   {
            a[freq[arr.charAt(i)-'a']-1] = arr.charAt(i);
            freq[arr.charAt(i)-'a']=freq[arr.charAt(i)-'a']-1;
   }
   for(int i=0;i<a.length;i++)
   {
       ans+=a[i];
   }
    return ans;
   
}

代码 2

public static String countSort(String arr)
{
    
   
   int freq[] = new int[26];
   char a[] = new char[arr.length()];
   for(int i=0;i<arr.length();i++)
   {
       freq[arr.charAt(i)-'a']++;
   }
   for(int i=1;i<26;i++)
   freq[i]+=freq[i-1];
   String ans="";
   for(int i=arr.length()-1;i>=0;i--)
   {
            a[freq[arr.charAt(i)-'a']-1] = arr.charAt(i);
            freq[arr.charAt(i)-'a']=freq[arr.charAt(i)-'a']-1;
   }
   return new String(a);
   
}

预期时间复杂度:O(N)。预期辅助空间:O(N)。

标签: counting-sort

解决方案


推荐阅读