[LeetCode]190. Reverse Bits | 按位反转操作问题解法

题目来源:LeetCode: Reverse Bits

问题描述:将输入的32位无符号整数对应的二进制数,按位反转后返回对应的整数。

Reverse bits of a given 32 bits unsigned integer.

For example, given input 43261596 (represented in binary as 00000010100101000001111010011100), return 964176192 (represented in binary as 00111001011110000010100101000000).
Follow up:
If this function is called many times, how would you optimize it?
Related problem: Reverse Integer

方案1:

Note:按位操作,对输入从后向前逐一处理。

[LeetCode]191. Number of 1 Bits | 汉明重量几种解法

题目来源:LeetCode: number-of-1-bits

问题描述:二进制串中1的个数,又被称为汉明重量

Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.

方案1:

Note:从末尾开始,逐位统计1的个数;末位为1时为奇数,除2操作即为右移一位。

[LeetCode] 217.Contains-Duplicate | 数组包含相同元素判断

题目来源:LeetCode: 217. Contains Duplicate

Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.

思路

  • 冒泡的方式逐一比较, 时间复杂度: O(n^2)
  • 先折半插入排序, 过程中比较是否有相同元素, 时间复杂度:O(nlogn)
  • 逐一将元素插入Set或HashTable,判断是否已重复, 时间复杂度: O(n)

Sublime如何配置显示空格、制表符、回车换行符

White space characters include carriage returns, line feeds, spaces, and tabs.
CR: Carriage Returns, 回车,常常标记为\r
LF: Line Feeds,换行,常常标记为\n
Spaces,空格
Tabs,制表符

DOS及Windows下:CR LF(\r\n)回车换行表示切换至新的一行
Linux及Unix下:LF(\n)换行表示切换至新的一行
Mac OS下:CR(\r)回车符表示切换至下一行

跨系统时由于系统间差异导致显示问题:Windows打开Linux下的文件时,所有行合并为一行;Linux打开Windows下的文件后,出现很多^M符号。

Linux下删除^M的方法:cat test.txt | tr -d "\r" > newTest.txt
Linux也有实现与Windows系统文件格式互换的命令:unix2dos, dos2unix
unix2dos 是把linux文件格式转换成windows文件格式
dos2unix 是把windows格式转换成linux文件格式

Java中equals()和==的异同

本文结合实例分析了Java中equals和==操作符的异同,参考了诸多文献,并给出了相应的实例程序。

In Java, all variables are either primitive types or references.
Java中所有变量均为直接数据类型或引用

==: 比较引用是否指向同一个对象。
.equals(): 比较引用所指向对象的内容(值)是否相同(不同类可自定义重写该方法)。

== operator checks if the references of both the objects are the same.
equals method compares values for equality.
Java中equals和==的区别 值类型是存储在内存中的堆栈(简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。