http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html


随机应变 ABCD: Always Be Coding and … : хороший
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html


1. Clarifying the Question
2. Confirming Input
3. Test Cases
4. Brainstorming
5. Runtime Analysis
6. Coding
7. Debugging
8. Wrap-up
history of software bugs
http://archive.wired.com/software/coolapps/news/2005/11/69355?currentPage=all
class Node(object):
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree(object):
def __init__(self, root):
self.root = Node(root)
def search(self, find_val):
return self.preorder_serach(tree.root, find_val)
def print_tree(self):
return self.preorder_print(tree.root, "")[:-1]
def preorder_search(self, start, find_val):
if start:
if start.value == find_val:
return True
else
return self.preorder_search(start.left, find_val) or self.preorder_search(start.right, find_val)
return False
def preorder_print(self, start, traversal):
if start:
traversal += (str(start.value) + "-")
traversal = self.preorder_print(start.left, traversal)
traversal = self.preorder_print(start.right, traversal)
return traversal
Binary Search Tree
class Node(object):
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BST(object):
def __init__(self, root):
self.root = Node(root)
def insert(self, new_val):
self.insert_helper(self.root, new_val)
def insert_helper(self, current, new_val):
if current_value < new_val:
if current.right:
self.insert_helper(current.right, new_val)
else:
current.right = Node(new_val)
else:
if current.left:
self.insert_helper(current.left, new_val)
else:
current.left = Node(new_val)
def search(self, find_val):
return self.search_helper(self.root, find_val)
def search_helper(self, current, find_val):
if current:
if current.value == find_val:
return True
elif current.value < find_val:
return self.search_helper(current.right, find_val)
else:
return self.search_helper(current.left, find_val)
return False
graph(network): how things is connect one another which is similar to tree.
0[0, 1, 0, 0]
1[1, 0, 1, 1]
2[0, 1, 0, 1]
3[0, 1, 1, 0]
In Python, the map concept appears as a built-in data type called a dictionary. A dictionary contains key-value pairs. Dictionaries is extremely easy to use and useful. Here’s a sample of setting up a dictionary.
locations = {'North America': {'USA': ['Mountain View']}}
locations['North America']['USA'].append('Atranta')
locations['Asia'] = {'India': ['Bangalore']}
locations['Asia']['China'].append = ['Shanghai']
locations['Africa'] = {'Egypt': ['Cairo']}
usa_sorted = sorted(locations['North America']['USA'])
for city in usa_sorted
print city
asia_cities = []
for countries, cities in location['Asia'].iteritems():
city_country = cities[0] + " - " + countries
asia_cities.append(city_country)
asia_sorted = sorted(asia_cities)
for city in asia_sorted:
print city
When hash table collision, bucket store data.
Hash Value = (ASCII Value of First Letter * 100) + ASCII Value of Second Letter
hash table
class HashTable(object):
def __init__(self):
self.table = [None]*10000
def store(self, string):
hv = self.calculate_hash_value(string)
if hv != -1:
if self.table[hv] != None:
self.table[hv].append(string)
else
self.table[hv] = [string]
def lookup(self, string):
hv = slef.calculate_hash_value(string)
if hv != -1:
if self.table[hv] != None:
if string in self.table[hv]:
return hv
return -1
def calculate_hash_value(self, string):
value = ord(string[0])* 100 + ord(string[1])
return -1
Tree DFS, In-order
def binarySearch(alist, item):
first = 0
last = len(alist)-1
found = False
while first <= last and not found:
midpoint = (first + last) // 2
if alist[midpoint] == item:
found = True
else:
if item < alist[midpoint]:
last = midpoint-1
else:
first = midpoint+1
return found
recursion
function recursive(input):
if input <= 0
return input
else
output = recursive(input - 1)
return output
fib
function getFib(position){
if (position == 0) { return 0; }
if (position == 1) { return 1; }
var first = 0,
second = 1,
next = first + second;
for (var i = 2; i < position; i++){
first = second;
second = next;
next = first + second;
}
return next;
}
def get_fib(position):
if position == 0 or position == 1:
return position
return get_fib(position -1) + get_fib(position -2)
margin sort efficiency
log(n)
1, 4(log n1),8(log n3), 16(log n4)
ease yourself by commic
https://xkcd.com/1185/
margin sort text
http://algs4.cs.princeton.edu/22mergesort/
quick sort
def quicksort(array):
if len(array) < 1:
return array
pivot = array[0]
left = []
right = []
for x in range(1, len(array)):
if array[x] <= pivot:
left.append(array[x])
else:
right.append(array[x])
left = quicksort(left)
right = quicksort(right)
foo = [pivot]
return left + foo + right
list: A B C
set: C A B
class Queue:
def __init__(self, head=None):
self.storage = [head]
def enqueue(self, new_element):
self.storage.append(new_element)
def peek(self):
return self.storage[0]
def dequeue(self):
return self.storage.pop(0)
def delete_first(self):
deleted = self.head
if self.head:
self.head = self.head.next
deleted.next = None
return deleted
class Element(object):
def __init__(self, value):
self.value = value
self.next = None
class LinkedList(object):
def __init__(self, head=None):
self.head = head
def append(self, new_element):
current = self.head
if self.head:
while current.next:
current = current.next
current.next = new_element
else:
self.head = new_element
def insert_first(self, new_element):
new_element.next = self.head
self.head = new_element
def delete_first(self):
if self.head:
deleted_element = self.head
temp = deleted_element.next
self.head = temp
return deleted_element
else:
return None
class Stack(object):
def __init__(self,top=None):
self.ll = LinkedList(top)
def push(self, new_element):
self.ll.insert_first(new_element)
def pop(self):
return self.ll.delete_first()
This class to represent how classy someone
or something is.”Classy” is interchangable with “fancy”.
If you add fancy-looking items, you will increase
your “classiness”.
class Classy(object):
def __init__(self):
self.items = []
def addItem(self, item):
self.items.append(item)
def getclassiness(self):
classiness = 0
if len(self.items) > 0:
for item in self.items:
if item == "tophat":
classiness += 2
elif item == "bowtie":
classiness += 4
elif item == "monocle":
classiness += 5
return classiness
notation: expression
():parenthesis
“””input manatees: a list of “manatees”, where one manatee is represented by a dictionary
a single manatee has properties like “name”, “age”, et cetera
n = the number of elements in “manatees”
m = the number of properties per “manatee” (i.e. the number of keys in a manatee dictionary)”””
def example1(manatees):
for manatee in manatees:
print manatee[‘name’]
def example2(manatees):
print manatees[0][‘name’]
print manatees[0][‘age’]
def example3(manatees):
for manatee in manatees:
for manatee_property in manatee:
print manatee_property, “: “, manatee[manatee_property]
def example4(manatees):
oldest_manatee = “No manatees here!”
for manatee1 in manatees:
for manatee2 in manatees:
if manatee1[‘age’] < manatee2['age']:
oldest_manatee = manatee2['name']
else:
oldest_manatee = manatee1['name']
print oldest_manatee
class Element(object):
def __init__(self, value):
self.value = value
self.next = None
class LinkedList(object):
def __init__(self, head=None):
self.head = head
def append(self, new_element):
current = self.head
if self.head:
while current.next:
current = current.next
current.next = new_element
else:
self.head = new_element
def get_position(self, position):
counter = 1
current = self.head
if position < 1:
return None
while current and counter <= position:
if counter == position:
return current
current = current.next
counter += 1
return None
def insert(self, new_element, position):
counter = 1
current = self.head
if position > 1:
while current and counter < position:
if counter == position -1:
new_element.next = current.next
current.next = new_element
current = current.next
counter += 1
elif position == 1:
new_element.next = self.head
self.head = new_element
def delete(self, value):
current = self.head
previous = None
while current.value != value and current.next:
previous = current
current = current.next
if current.value == value:
if previous:
previous.next = current.next
else:
self.head = current.next
sudo npm install -g bower
https://bower.io/
run bower install
var numLetters = function(letter){
return new Function('times',
"if (times < 0) return '';
var result = '';
times = Math.round(times);
while(times--){ result += '" + letter +"'; }
return result;"
);
}
[/javascript]
[javascript]
<div id="beach-info"></div>
<script type="text/template" id="beach-supplies">
<% if(supplies.empty) { %>
<p> Whaaaat? Get to the beach anyway! </p>
<% } %>
<ul>
<li> Sunscreen - <% if (supplies.sunscreen) { %> check! <% } %> </li>
<% if (supplies.towel) { %>
<li> Towel - Yes, a <%= supplies.towel =%> one! </li>
<% } %>
<li> Shades - <% if (supplies.shades) { %> check! <% } else { %> sadly, no!! <% } %></li>
</ul>
</script>
var string = "Hi, my name is *(name)*. And I *(emotion)* this *(thing)*!";
var logResult = template( string );
logResult('Richard', 'love', 'green mint icecream', 2);
Yomen
npm install -g grunt-cli bower yo generator-karma generator-angular
http://knockoutjs.com/
<user-bio>
<h3>Richard</h3>
<img src="img/richard_profile.jpg" alt="Richard's profile picture">
<p>Before working at NNN, Richard...
</user-bio>