我咋不上天 level
获赞
104
粉丝
0
关注
0
看过 TA
0
中山大学南方学院
2016
Java
IP属地:未知
暂未填写个人简介
私信
关注
题目如下:   给出字符串:99xxxx,输出将9替换成g的所有组合结果,例如99xxxx,9gxxxx,g9xxxx,ggxxxx
剑指MS:import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNextLine()){ String line = scanner.nextLine(); char[] ch = line.toCharArray(); System.out.println(process(ch)); } scanner.close(); } private static String process(char[] ch) { List<Integer> list = new ArrayList<Integer>(); StringBuilder sb = new StringBuilder(); int high = 0; //high代表遍历的上限 for (int i = 0; i < ch.length; i++) { if (ch[i] == 'g' || ch[i] == '9') { list.add(i); high = high * 2 + 1 ; } } for (int i = 0; i <= high; i++) { for (int j = 0; j < list.size(); j++) { if (((i>>>j)&1) != 0) { ch[list.get(j)] = '9'; }else { ch[list.get(j)] = 'g'; } } sb.append(new String(ch)+","); } return sb.toString(); } } 我的代码。
0 点赞 评论 收藏
分享
1+11+111+1111+.....+2016个1=SUM;&nbsp;&nbsp;&nbsp;1、11、111、.....、2016个1都为十进制,求sum;&nbsp;&nbsp;&nbsp;变型题:&nbsp;&nbsp;&nbsp;1、11、111、.....、2016个1都为二进制,求sum的十进制。
牛客279218号:原题的话,维护一个进位carry =0 ,第一位的值为 (2016+carry)% 10 =6; carry = (2016 + carry)/10 ;以此类推。 变形题的话, 先全部 +1 ,再减 2016,结果就等于 (1111111111…………1110)(2进制)-2016(10进制)。
投递CVTE等公司7个岗位
0 点赞 评论 收藏
分享
N个元素的数组,输出先右位移k位,要求时间复杂度为O(n),例如输入数组为[1,2,3,4],k=1,结果为[4,1,2,3]
Jackhaha:这个是旋转数组的题,写了一下代码如下 public static void rotateArray(int[] a, int k){ if(k%a.length==0){ return ; } if(k>a.length){ k = k%a.length; } reverse(a,0,a.length-1); reverse(a,0,k-1); reverse(a,k,a.length-1); } public static void reverse(int[] a, int start, int end){ while(start<end){ int tmp = a[end]; a[end] = a[start]; a[start] = tmp; start++; end--; } }
投递CVTE等公司7个岗位
0 点赞 评论 收藏
分享
一个百万级别的整型数组,有数字有可能重复,在数组中到二个数字和为100的所以组合。
牛客279218号:用哈希表,从左往右遍历数组,设数组值为value,如果hashmap中存在100-value,则有(value,100-value)对,然后将value插入hashmap(如果value不存在)。时间复杂度o(n)。
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务