leetcode笔记 189. Rotate Array & 190. Reverse Bits

leetcode刷题23天
189. Rotate Array
Given an array, rotate the array to the right by k steps, where k is non-negative.

Example 1:

Input: [1,2,3,4,5,6,7] and k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]
Example 2:

Input: [-1,-100,3,99] and k = 2
Output: [3,99,-1,-100]
Explanation:
rotate 1 steps to the right: [99,-1,-100,3]
rotate 2 steps to the right: [3,99,-1,-100]

代码1(想法比较简单粗暴,时间复杂度比较高):

 public static void rotate(int[] nums, int k) {
    	if(nums.length==0||k==0)
    		return;
    	for(int i =1;i<=k;i++) {
    		int temp = nums[nums.length-1];
    		for(int j = nums.length-1;j>0;j--) {
    			nums[j] =nums[j-1];
    		}
    		nums[0] = temp;
    	}
    	for(int i = 0;i<nums.length;i++) {
    		System.out.print(nums[i]+" ");
    	}
    }

代码2(看了一个解答以后得到的,想法确实很新颖,相比上一个方案,时间复杂度减少很多):

class Solution {
    public static void rotate(int[] nums, int k) {
    	if(nums.length==0||k==0)
    		return;
    	k = k%nums.length;
    	reverseArr(nums,0,nums.length-k-1);
    	reverseArr(nums,nums.length-k,nums.length-1);
    	reverseArr(nums,0,nums.length-1);

    }
    public static void reverseArr(int[] nums,int start,int end) {
    	int tempValue;
    	while(start<end) {
    		tempValue = nums[start];
    		nums[start] = nums[end];
    		nums[end] = tempValue;
    		start++;
    		end--;
    	}
    	
    }
}
  1. Reverse Bits
    Reverse bits of a given 32 bits unsigned integer.

Example 1:

Input: 00000010100101000001111010011100
Output: 00111001011110000010100101000000
Explanation: The input binary string 00000010100101000001111010011100 represents the unsigned integer 43261596, so return 964176192 which its binary representation is 00111001011110000010100101000000.
Example 2:

Input: 11111111111111111111111111111101
Output: 10111111111111111111111111111111
Explanation: The input binary string 11111111111111111111111111111101 represents the unsigned integer 4294967293, so return 3221225471 which its binary representation is 10101111110010110010011101101001.

代码:

public class Solution {
    // you need treat n as an unsigned value
    public int reverseBits(int n) {
        if(n==0)
        	return 0;
        int res = 0;
        for(int i = 1;i<=32;i++) {
        	res = res<<1  | (n & 1);
        	n=n>>>1;
        }
        return res;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面试中,&zwnj;准备一些常见面试问题的答案是非常重要的,&zwnj;这有助于你在面试中更加自信和有条理地回答问题。&zwnj;以下是一些常见的面试问题及其答案:&zwnj; 请你自我介绍一下。&zwnj; 回答时,&zwnj;应简明扼要地介绍自己的基本信息,&zwnj;包括姓名、&zwnj;年龄、&zwnj;教育背景、&zwnj;工作经验等。&zwnj;重点突出与应聘岗位相关的经验和能力,&zwnj;同时展现积极向上的态度和信心。&zwnj; 你为什么选择这个职位?&zwnj; 回答时,&zwnj;可以提及对该职位的兴趣、&zwnj;相关的工作经验以及个人职业发展规划,&zwnj;强调这个职位如何与自己的长期职业目标相匹配。&zwnj; 你对自己的未来有什么规划?&zwnj; 表明自己对长期职业发展的规划,&zwnj;强调希望在公司内有所成长和发展,&zwnj;同时也提到愿意根据公司的发展需要调整自己的角色和职责。&zwnj; 你如何看待加班?&zwnj; 可以表达自己理解在某些行业和职位中,&zwnj;加班可能是必要的。&zwnj;强调自己愿意为了项目或任务的完成而努力,&zwnj;但同时也希望保持工作与生活的平衡。&zwnj; 你对薪资有什么要求?&zwnj; 在回答时,&zwnj;可以先说明自己对该职位的价值认知,&zwnj;然后提出一个合理的薪资预期。&zwnj;可以提到自己期望的薪资范围,&zwnj;并解释这样预期的理由。&zwnj; 你有什么业余爱好?&zwnj;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值